严格模式重写arguments会导致语法错误,代码将不会执行。我试了一下没有报错啊
引自MDN
第二,严格模式下,参数的值不会随 arguments 对象的值的改变而变化。在正常模式下,对于第一个参数是 arg 的函数,对 arg 赋值时会同时赋值给 arguments[0],反之亦然(除非没有参数,或者 arguments[0] 被删除)。严格模式下,函数的 arguments 对象会保存函数被调用时的原始参数。arguments[i] 的值不会随与之相应的参数的值的改变而变化,同名参数的值也不会随与之相应的 arguments[i] 的值的改变而变化。
function f(a){
"use strict";
a = 42;
return [a, arguments[0]];
}
var pair = f(17);
console.assert(pair[0] === 42);
console.assert(pair[1] === 17);
也就是说严格模式下是可以给arguments赋值的,arguments用来只是纪录传入时num1,num2的值,并不会因为num1,num2在函数体里发生改变而一起改变,也不会因为你给arguments做了修改而影响num1,和num2的值。
13 回答12.7k 阅读
7 回答1.8k 阅读
3 回答1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
2 回答1.8k 阅读
2 回答1.1k 阅读✓ 已解决
http://www.ecma-international...
Strict mode 跟 arguments 相关的所有点
所以你试试
arguments = 100
就明白了。