Javascript:参数
Javascript: Arguments
函数 1
function myConcat (separator) {
var args = Array.prototype.slice.call(arguments, 1);
return args.join(separator);
}
var a = myConcat(", ", "red", "orange", "blue");
函数 2
function myConcat () {
var args = Array.prototype.slice.call(arguments, 1);
return args.join();
}
var a = myConcat(", ", "red", "orange", "blue");
谁能告诉我为什么这两者有区别?
非常感谢
您不必将分隔符传递给函数,您也可以这样编写代码:
function myConcat () {
var args = Array.prototype.slice.call(arguments);
return args.join(', ');
}
var a = myConcat("red", "orange", "blue");
console.log(a);
问题变了,答案也变了。
在 1 中,函数让您决定使用哪个分隔符,将其作为第一个参数传递。您不需要定义分隔符参数,但出于可读性原因可能很方便,也就是说,查看您的函数的程序员可以立即理解第一个参数是使用的分隔符。
即使不定义也可以得到相同的结果,只是假设第一个参数是要使用的分隔符:
function myConcat () {
// transform array like object in array
var args = Array.prototype.slice.call(arguments, 0);
// remove first element and use it as separator
var separator = args.shift();
// join other arguments with separator
return args.join(separator);
}
var a = myConcat(", ", "red", "orange", "blue");
document.getElementById('result').innerHTML = a;
<div id="result"></div>
此处使用 shift
函数获取分隔符,该函数删除并 returns 数组的第一个元素。
如果您想知道 slice
部分到底在做什么,只是将 arguments
类似数组的对象转换为真正的数组
2中分隔符是固定的,是js join
函数默认的分隔符,是逗号。还调用 2 传递逗号作为第一个参数是无意义的,并且要写 2 有某种意义,你应该做这样的事情:
function myConcat () {
var args = Array.prototype.slice.call(arguments, 0);
return args.join();
}
然后这样调用它:
var a = myConcat("red", "orange", "blue");
函数 1
function myConcat (separator) {
var args = Array.prototype.slice.call(arguments, 1);
return args.join(separator);
}
var a = myConcat(", ", "red", "orange", "blue");
函数 2
function myConcat () {
var args = Array.prototype.slice.call(arguments, 1);
return args.join();
}
var a = myConcat(", ", "red", "orange", "blue");
谁能告诉我为什么这两者有区别?
非常感谢
您不必将分隔符传递给函数,您也可以这样编写代码:
function myConcat () {
var args = Array.prototype.slice.call(arguments);
return args.join(', ');
}
var a = myConcat("red", "orange", "blue");
console.log(a);
问题变了,答案也变了。
在 1 中,函数让您决定使用哪个分隔符,将其作为第一个参数传递。您不需要定义分隔符参数,但出于可读性原因可能很方便,也就是说,查看您的函数的程序员可以立即理解第一个参数是使用的分隔符。
即使不定义也可以得到相同的结果,只是假设第一个参数是要使用的分隔符:
function myConcat () {
// transform array like object in array
var args = Array.prototype.slice.call(arguments, 0);
// remove first element and use it as separator
var separator = args.shift();
// join other arguments with separator
return args.join(separator);
}
var a = myConcat(", ", "red", "orange", "blue");
document.getElementById('result').innerHTML = a;
<div id="result"></div>
此处使用 shift
函数获取分隔符,该函数删除并 returns 数组的第一个元素。
如果您想知道 slice
部分到底在做什么,只是将 arguments
类似数组的对象转换为真正的数组
2中分隔符是固定的,是js join
函数默认的分隔符,是逗号。还调用 2 传递逗号作为第一个参数是无意义的,并且要写 2 有某种意义,你应该做这样的事情:
function myConcat () {
var args = Array.prototype.slice.call(arguments, 0);
return args.join();
}
然后这样调用它:
var a = myConcat("red", "orange", "blue");