【发布时间】:2015-07-31 07:07:57
【问题描述】:
当我遇到这种奇怪的行为时,我正在测试将值转换为 javascript 中的整数并在控制台中打印输出。
console.log(+[]) ==> 0
console.log(+[123]) ==> 123
console.log(+['123']) ==> 123
console.log(+[123, 456]) ==> NaN
console.log(+['123asdf']) ==> NaN
我认为值是使用 parseInt 转换的,但事实并非如此,所以我去了 javascript 转换表 http://www.w3schools.com/js/js_type_conversion.asp
这让我更好地了解如何执行转换。根据这张表
[] => 0
[20] => 20
[10,20] => NaN
["twenty"] =>NaN
["ten","twenty"] => NaN
因此,显然他们采用数组的第一个值并使用指定的规则对其进行转换。 parseInt 的规则不适用。
我经过测试得出了这个结论。你可以随意嵌套它,它会给你同样的结果。
console.log(+[[[[[[[[[[[10]]]]]]]]]]]) => 10
然后我想,如果是这样的话,好吧
console.log(+[undefined]) will return NaN
console.log(+[null]) will return 0
console.log(+[false]) will return 0
这些是从 javascript 转换表到整数的预期值,但结果
console.log(+[undefined]) => 0
console.log(+[null]) => 0
console.log(+[false]) => NaN
最后一个是最奇怪的,因为 false 被转换为 0,而不是 NaN。 有人可以解释这种奇怪的行为或解释这种转换是如何执行的吗?
【问题讨论】:
标签: javascript arrays