我正在学习JavaScript,我对arguments属性数组感到很困惑.
我有一个函数,它接受一个参数并返回它.当我传递参数并使用arguments[0] = value它重新分配时,它正在更新值.
function a(b) {
arguments[0] = 2;
return b;
}
console.log(a(1)); //returns 2Run Code Online (Sandbox Code Playgroud)
但是当我调用没有参数的相同函数时它返回undefined.
function a(b) {
arguments[0] = 2;
return b;
}
console.log(a()); //returns undefinedRun Code Online (Sandbox Code Playgroud)
但即使我通过undefined,价值也会更新.
function a(b) {
arguments[0] = 2;
return b;
}
console.log(a(undefined)); //returns 2Run Code Online (Sandbox Code Playgroud)
我认为如果你没有将参数传递给JavaScript函数,它会自动创建它并分配值,undefined并在更新后它应该反映更新的值,对吧?
也a()和a(undefined)是相同的东西,对不对?
考虑:
> function hello(what) {
. what = "world";
. return "Hello, " + arguments[0] + "!";
. }
> hello("shazow")
"Hello, world!"
Run Code Online (Sandbox Code Playgroud)
为什么改变价值what变化的价值arguments[0]?