在非严格模式下,arguments有一个特殊特性
// 修改arguments内的实参值后,实参也会发生变化
function updateArguments(x){
console.log(x);
arguments[0] = 'y';
console.log(x);
}
updateArguments('x');
结果很奇怪,第一次输出x
,第二次输出y
。也就是说,修改arguments时,实参的值也会被改变
在严格模式下这个特性被删除
/严格模式下的arguments
function setArguments(x){
'use strict';
console.log('修改前的值:', x);
console.log('修改前arguments的值:', arguments);
arguments[0] = 'y';
console.log('修改后的值:',x);
console.log('修改前arguments的值:', arguments);
}
setArguments('严格模式');
输出值如下
修改前的值: 严格模式
修改前arguments的值: { '0': '严格模式' }
修改后的值: 严格模式
修改前arguments的值: { '0': 'y' }
可见arguments虽然被改变,但是实参并没有发生变化。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。