问题
某龙的笔试题,问console.log(+new Array(017));输出什么
第一反应是考察new Array()跟017
其实考察的是+
+运算符作为二元运算符时,有两个功能
- 数字相加
- 连接字符串
数字相加没啥好说的,连接字符串时,会先把两个参数都转换成字符串再进行连接。
+作为一元运算符时,会将参数转换为数字返回
结果
所以console.log(+new Array(017));输出的是NaN
其他
类似的还有-运算符,输出一个转换后的负数
附上一些其他的输出
console.log(+new Array());
//0
console.log(+new Array(0));
//0
console.log(+new Array(1));
//0
console.log(+new Array(2)); //2以上都是NaN
//NaN
console.log(+[]);
//0
console.log(+[1]);
//1
console.log(+[1, 2]);
//NaN
console.log(+[undefined]);
//0
console.log(+[undefined, undefined]);
//NaN
这篇博客讨论了JavaScript笔试题中关于`new Array(017)`的问题,揭示了在JavaScript中,当运算符作为二元运算符时,会进行数字相加或字符串连接,而作为一元运算符时则会将参数转换为数字。文中提到了输出结果以及类似的运算符行为,并引用了ECMAScript 2016规范作为参考。
192

被折叠的 条评论
为什么被折叠?



