美文网首页饥人谷技术博客
JavaScript里的隐式转换

JavaScript里的隐式转换

作者: _于易 | 来源:发表于2017-10-11 12:01 被阅读16次

if(xx)(转成布尔值)

我们都知道,if后面的括号里应该写上一个表示判断的语句,它得到的值不是true就是false。
但是,如果括号里只写一个参数呢?比如if(obj)?
这时就涉及到语句中存在的隐式类型转换了。实际上js会把括号里的东西类型转换成布尔值。
转换的规律比较简单,以下的值会被转换成false:

null
undefined
0、+0、-0
NaN
""(空字符串)

除了上面的值,其他的全部都会转换成true。

关于 == 的判断 (转成number类型)

这个玩意儿真是万恶。。。
看看下面这两道题

var a = false;
var b = undefined;
if (a == b) {
    alert('true');
}else{
    alert('false');
}

是不是以为会弹出true??再看下面一道:

console.log(null == false)

控制台会输出什么呢??。。。。是false
关于==符号的隐式转换,是有一个趋势,将两边的数据转换成number再比较,我们需要知道转number的规律:

  • 用+xxx来转number,+null == 0;+undefined == NaN; +NaN == NaN; 当然false是0,true是1.+""和+" "都是0.
    当涉及到null和undefined时要小心,它们并不是百分百地符合规律。null和undefined只等于对方。和别人一律不相等。

犀牛书为我们总结如下:

1.null和undefined,相等;
2.数字和字符串,转化成数字再比较;
3.如果有true或false,转换成1或0,再比较;
4.如果有引用类型,优先调用valueOf。
5.其余都不相等。
如果在比较时使用 === 就没有这些问题了。(纳闷(-。-;)为什么要发明 == 这个玩意儿)

相关文章

  • 2-JavaScript-的包装类和基本检测 隐式转换

    1 +new Date() --隐式转换 JavaScript的隐式转换,在使用“ + - | ~~ ”的时候会先...

  • javascript数据类型隐式转换

    javascript数据类型隐式转换 一、函数类 isNaN()改函数会对参数进行隐式的Number()转换,如果...

  • JavaScript里的隐式转换

    if(xx)(转成布尔值) 我们都知道,if后面的括号里应该写上一个表示判断的语句,它得到的值不是true就是fa...

  • js类型转换

    javaScript类型转换 标签(空格分隔): 未分类 隐式转换 当遇到以下几种情况,JavaScript会自动...

  • 03.【JS怪癖1】隐式类型转换

    参考资料:JavaScript 的怪癖 1:隐式类型转换 1.布尔值的隐式转换 1.1 转为false 四种情况:...

  • JavaScript精选练习(1)

    打印100以内的所有质数 写出斐波那契数列 如果对于隐式类型转换不太了解可以看看:JavaScript隐式类型转换

  • JavaScript预编译

    JavaScript预编译,你不知道的JavaScript 隐式类型转换 typeof   typeof 用来校验...

  • javascript 隐式转换

    1、如果两个不同的类型做加减运算,会做隐式转换 结果 第一条语句在运算前,数字50会被转换成字符串"50",第二条...

  • javascript 隐式转换

    你有没有在面试中遇到特别奇葩的js隐形转换的面试题,第一反应是怎么会是这样呢?难以自信,js到底是怎么去计算得到结...

  • C++类型转换

    C++的类型转换分为隐式转换和显式转换 隐式转换举例: int i=4; double d=i;//隐式转换 显式...

网友评论

    本文标题:JavaScript里的隐式转换

    本文链接:https://www.haomeiwen.com/subject/ajepyxtx.html