我试图使用arguments.length来获取命名函数的长度:
var a = function(b,c){
console.log(arguments.length);
};
a(1,2); //2 (this is what I'm expecting)
(function(b,c){
console.log(arguments.length);
})(1,2); //it returns 2 also
(b,c) => {
console.log(arguments.length);
};
(1,2); //2 also
但当我尝试使用命名箭头功能时:
let a = (b,c) => {
console.log(arguments.length);
};
a(1,2); //ReferenceError: arguments is not defined
和此:
((b,c) => {
console.log(arguments.length);
})(1,2); //ReferenceError: arguments is not defined
我现在真的很困惑
答案 0 :(得分:1)
Arrow functions do not bind the arguments
magic variable.你的第一次测试完全错了;表达式(1,2)
的返回值为2
,但仅仅因为2
是,
运算符的最后一个操作数,而不是因为arguments.length
。 "匿名箭头功能"甚至没有在该样本中被调用。