javascript - js弱类型性质转换问题
阿神
阿神 2017-04-11 12:38:43
[JavaScript讨论组]


可否详细解释一下输出结果

阿神
阿神

闭关修行中......

全部回复(3)
大家讲道理

(1)一个操作数+一个字符串会将操作数转化为字符串再想家

(2)第二个就如:1 + (+"2") + "2", 在+一元操作符会将操作数转换成数字

(3)"A"和"B"都无法转换成数字,Number("A") == NaN,而后面加上一个字符串,同(1),String(NaN) == "NaN"

(4)NaN同任何数字进行加减乘除等操作都是NaN,比较都是false

楼主 可以去看一下我写的一篇文章:
https://segmentfault.com/a/11...

怪我咯

首先, 你上面的console.log(1++"2"+"2");这个运行不会报错么?我试了是报错的.
然后, js中不会像java那样自动把非数字转换为ASCII码进行计算,所以你用字母进行减法计算的时候,计算结果是NaN
最后, js中和字符相加,就是转换为字符串拼接. 所以会出现NaN+"2"=NaN2.而NaN加上一个数字依旧是NaN,即not a number.

阿神

计算从左到右,
"+"在不同情况下,作用不一样:
1.数字 + 字符串, 字符串拼接;
2.数字 + 数字, 相加,
3.字符串 + 字符串, 字符串拼接
4.字符串 + 数字,字符串拼接
"-"作用都是"相减",非数字类型的会转化成数字类型

console.log(1+"2"+"2")  // "1" + "2" + "2" ==> "122"
console.log(1+ +"2" + "2") // +"2" === 2; 1 + 2 + "2" ==> 3 + "2" ==> "3" + "2" ==> "32"
console.log("A" - "B" + "2")  // "A" - "B"为NaN ==> "NaN" + "2" ==> "NaN2"
console.log("A" - "B" + "2")  // "A" - "B"为NaN, NaN加任何number都还是NaN
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号