美文网首页
js 中==和===

js 中==和===

作者: 自由加咖啡 | 来源:发表于2017-03-02 10:32 被阅读9次

js是弱类型语言,==比较时会进行隐式转换。比如 1 == '1'是true,因为会把他们自动转化为数字进行处理。===不会进行类型转换,是绝对相等,一般用这个比较靠谱。
js中 === 最保险的比较时比较两个字符串是否相等,因为在某些情况下,其他类型的值都会转化为字符串进行存储。比如,取input的val值取出来的就是字符串,但是我们赋值的时候是数字。

奇怪的情况:
1、 0 == '0'; //true
2、 0 == !'0';//true
3、 !0 == '0'; //false
4、 0 == '000000'; //true
5、 0==false; //true
6、 '00' == '000'; //false
7、 0 == ''; //true
8、'0' == ''; //false
9、 Boolean('0'); //true
10、 Boolean(0); //false

分析:
1、隐式转换,把字符串'0'转为数字0,然后比较
2、隐式转换,把数字0转为布尔值false, !(非)会把字符串'0'转为false
3、数字0是false,!(非)会把数字0转为true,true 和字符串'0'不相等
4、隐式转换,把字符串'000000',转化为数字,即是0
5、0在和非数字且不能转为数字的值比较时,会自动转化为布尔值。即false
6、字符串比较,不相等
7、0 和 '' 都会隐式转换为false
8、字符串比较,不相等
(上面如果===,全都是false)

关于true和false的比较
'true' == true; //false
'false' == false //false
字符串不会进行隐式转换所以不相等

相关文章

  • js 中==和===

    js是弱类型语言,==比较时会进行隐式转换。比如 1 == '1'是true,因为会把他们自动转化为数字进行处理。...

  • 单引号和双引号

    JS中 js中单引号和双引号的区别(html中属性规范是用双引号,js中字符串规定是用单引号)(js中单引号区别和...

  • js中的 || 和 &&

    ||和&& var a = a || {}在js中,|| 以及 &&,进行运算,返回的东西,一般不是true或者f...

  • JS中的{} + [] 和 [] + {}

    在Js中,由于它的弱类型语言特性,存在大量的隐式转换。基础类型(即string, boolean,number,n...

  • js中==和===区别

    简单来说: == 代表相同, ===代表严格相同, 为啥这么说呢, 这么理解: 当进行双等号比较时候: 先检查两个...

  • js中==和===区别

    简单来说: == 代表相同, ===代表严格相同, 为啥这么说呢, 这么理解: 当进行双等号比较时候: 先检查两个...

  • JS中的 || 和 &&

    &&: 输入表达式的第一个falsy值,如果都为真,输出最后一个truey值比如:1 && null && 2 /...

  • JS中==和===区别

    简单来说: == 代表相同, ===代表严格相同(数据类型和值都相等)。 【理解原理】: 当进行双等号比较时候,先...

  • js中==和===区别

    简单来说: == 代表相同, ===代表严格相同, 为啥这么说呢, 这么理解: 当进行双等号比较时候: 先检查两个...

  • js中的&&和||

    js中&&运算符优先级大于|| ?&& 和 || 的作用只有一个(定义):进行布尔值的且和或的运算。当运算到某一个...

网友评论

      本文标题:js 中==和===

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