if (nargs > 1) {
for (i = 1; i < nargs; i++) {
- if (!njs_is_numeric(&args[i])) {
+ if (njs_is_undefined(&args[i])) {
+ num = NAN;
+ goto done;
+
+ } else if (!njs_is_numeric(&args[i])) {
njs_vm_trap_value(vm, &args[i]);
return njs_trap(vm, NJS_TRAP_NUMBER_ARG);
num = -INFINITY;
}
+done:
+
njs_value_number_set(&vm->retval, num);
return NXT_OK;
{ nxt_string("Math.max('1', '2', '5')"),
nxt_string("5") },
+ { nxt_string("Math.max(5, {valueOf: function () {return 10}}, 6)"),
+ nxt_string("10") },
+
+ { nxt_string("Math.max(5, {valueOf: function () {return 10}}, 20)"),
+ nxt_string("20") },
+
+ { nxt_string("Math.max(5, undefined, 20)"),
+ nxt_string("NaN") },
+
+ { nxt_string("Math.max(-10, null, -30)"),
+ nxt_string("0") },
+
{ nxt_string("Math.min()"),
nxt_string("Infinity") },