牛客JavaScript题

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

隐式转换

JavaScript高阶函数

解析

A选项:ES6的写法,获取箭头函数中的形参的个数。
B选项:0
C选项:+[]进行隐式转换,[]转换的结果为' '(空值),又''==0的结果是true,于是返回的是1,整个转换过程:[]=>' '=>0

D选项:

其他相关点:

  • 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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。