ES2015中的 function内的arguments

这个其实没啥好写的 前几天出了nodejs6.0,于是今天想看一下更新的东西。。。结果尼玛 你猜怎么着。。。已经更新到6.1了。。。。我。。。。

然后看了下因为主要是更新了v8引擎 所以支持了非常之多的ES2015的内容 具体看这个 http://node.green 几乎所有都支持了

关于函数参数的内容 之前没有注意太多 然后突然发现这个 试了一下运行这个 发现一个有意思的东西 关于arguments变量的

1
2
3
4
5
6
7
(function (a, b, c = 2) {
console.log(a,b,c);
console.log(arguments);
a = -1;
console.log(a,b,c);
console.log(arguments);
})(0, 1, 2);

以及不包含默认变量的

1
2
3
4
5
6
7
(function (a, b, c) {
console.log(a,b,c);
console.log(arguments);
a = -1;
console.log(a,b,c);
console.log(arguments);
})(0, 1, 2);

发现两个的结果不一样

当使用默认参数这个语法的时候(即使用ES2015语法时,无论是否传入该参数),arguments与参数是相互独立的,修改一边不会影响到另外一边

而不使用这个语法的时候,和大家所知道的一样,arguments与传入的参数相互绑定,未传入的参数不作为arguments的元素

除了这个默认参数会有这个区别之外 列表里面其他几个ES2015里涉及到的函数参数相关的也都是这样

嗯呢 就这样先 还有强烈不推荐使用arguments这个东西 有点破坏语法的感觉 也会影响代码优化