1.以下哪些表达式的值为0?
- A (()=>{}).length
- B 1 & 2
- C +[]
- D [1,2,-3].reduce((a, b) => a - b, 0)
答案为ABCD
知识点:
获取形参个数:
1、
function fun(a,b){console.log(fun.length)};//输出2
((a,b,c)=>{console.log(a+b+c)}).length//输出3
2、arguments.callee:是一个指针,指向拥有arguments对象的函数,每当函数使用的时候就会创建arguments对象,然后argument.callee.length指的就是当前的函数的形参数。
获取实参个数:
argument.length即可获取
按位与 按位或
1=0001 2=0010
按位与:同为1即为1,否则为0 1&2=0000即0
按位或:有1即为0,否则为0 1 | 2=0011即3
异或:相同为0,不同为1,1 ^ 2=0011即3
解析
A选项:ES6的写法,获取箭头函数中的形参的个数。
B选项:0
C选项:+[]进行隐式转换,[]转换的结果为' '(空值),又''==0的结果是true,于是返回的是1,整个转换过程:[]=>' '=>0
其他相关点:
- eval():可以接收一个字符串参数,转换成js代码执行,eval.length值为1
var s1='"a" + 2'; //表达式
var s2='{a:2}'; //语句
alert(eval(s1)); //->'a2'
alert(eval(s2)); //->undefined
alert(eval('(' + s2 + ')')); //->[object Object]
- RegExp.length的值为2
- "".toString.length的值为0
- 1.toString.length的值为1