Я не совсем понимаю, почему приведенный ниже вызов join() дает разные результаты, в зависимости от типа предоставленных аргументов.
Вот что я нашел:
var test = function() {
var args = Array.prototype.join.call(arguments,"_");
return args
};
console.log(test([1,2,3])) // #1: returns 1,2,3
console.log(test(1,2,3)) // #2: returns 1_2_3