return ret;
}
- if (nargs > 1 && !njs_is_string(&args[1])) {
- ret = njs_value_to_string(vm, &args[1], &args[1]);
- if (njs_slow_path(ret != NJS_OK)) {
- return ret;
+ value = njs_arg(args, nargs, 1);
+
+ if (njs_slow_path(!njs_is_string(value))) {
+ if (njs_is_undefined(value)) {
+ value = njs_value_arg(&njs_string_comma);
+
+ } else {
+ ret = njs_value_to_string(vm, value, value);
+ if (njs_slow_path(ret != NJS_OK)) {
+ return ret;
+ }
}
}
+ (void) njs_string_prop(&separator, value);
+
if (!njs_is_array(&args[0]) || njs_array_len(&args[0]) == 0) {
vm->retval = njs_string_empty;
return NJS_OK;
}
}
- if (nargs > 1) {
- value = &args[1];
-
- } else {
- value = njs_value_arg(&njs_string_comma);
- }
-
- (void) njs_string_prop(&separator, value);
-
size += separator.size * (array->length - 1);
length += separator.length * (array->length - 1);
{ njs_str("[].join.call()"),
njs_str("TypeError: cannot convert null or undefined to object") },
+ { njs_str("[1,2,3].join(undefined)"),
+ njs_str("1,2,3") },
+
{ njs_str("[].slice.call()"),
njs_str("TypeError: cannot convert null or undefined to object") },