Javascript学习笔记之相等符号与严格相等符号

 更新时间:2014年11月23日 15:49:25   投稿:hebedich  
本文详细介绍了javascript中的相等符号以及严格相等符号,需要的朋友可以参考下

Javascript 有两种方法来判断两种值是否相等。

相等符号

相等符号由两个等号组成: ==
Javascript 是弱类型语言。这就意味着相等符号为了比较两个值将会强制转换类型。

复制代码 代码如下:

""           ==   "0"           // false
0            ==   ""            // true
0            ==   "0"           // true
false        ==   "false"       // false
false        ==   "0"           // true
false        ==   undefined     // false
false        ==   null          // false
null         ==   undefined     // true
" \t\r\n"    ==   0             // true

上面的代码展示了类型转换的结果,因此我们知道使用相等符号 == 是个不好的编程习惯。由于 Javascript 中复杂的类型转换机制,将会使得由此产生的错误变得难以追踪。
此外,类型的强制转换会对性能也造成一定的影响,例如,当一个字符串与数字进行比较时,会被强制转换为数字。

严格相等符号

严格相等符号由三个等号组成: ===
它跟相等符号的操作相似,但是严格相等符号不会做强制类型转换的操作。

复制代码 代码如下:

""           ===   "0"           // false
0            ===   ""            // false
0            ===   "0"           // false
false        ===   "false"       // false
false        ===   "0"           // false
false        ===   undefined     // false
false        ===   null          // false
null         ===   undefined     // false
" \t\r\n"    ===   0             // false

上面的代码使得代码更加清晰,如果两个值的类型不同则直接返回 false,这也会使得性能得到提升。

比较对象

尽管 == 和 === 被称为相等符号,但是当比较的两个值中有一个类型是对象时,表现将大不相同。

复制代码 代码如下:

{} === {};                   // false
new String('foo') === 'foo'; // false
new Number(10) === 10;       // false
var foo = {};
foo === foo;                 // true

在这儿,不再仅仅是比较两个值是否相等,它将判断两个值是否引用同一个对象实例,这个行为比较像 C 中的指针。

总结

这里强烈建议只使用严格相等符号 ===。如果我们需要做类型转换,可以在比较前先做显式的类型转换,而不是靠 Javascript 本身复杂的强制转换方法。

相关文章

  • 探寻Javascript执行效率问题

    探寻Javascript执行效率问题

    作为开发人员,Web页面加载或刷新的速度对其网站至关重要。开发人员在各种浏览器中调试JavaScript的方法要少得多。比如,在Mozilla Firefox中,可以使用Firebug调试JavaScript,但仍然不能调整很多性能问题,如浏览器呈现消耗时间。
    2014-11-11
  • 了解ESlint和其相关操作小结

    了解ESlint和其相关操作小结

    这篇文章主要介绍了了解ESlint和其相关操作小结,详细的介绍了什么是ESlint以及ESlint规范,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • JS backgroundImage控制

    JS backgroundImage控制

    JS backgroundImage控制代码。
    2009-05-05
  • JavaScript Undefined,Null类型和NaN值区别

    JavaScript Undefined,Null类型和NaN值区别

    js中一些空值问题,未定义等一系列的区别说明
    2008-10-10
  • JavaScript中匿名、命名函数的性能测试

    JavaScript中匿名、命名函数的性能测试

    这篇文章主要介绍了JavaScript中匿名、命名函数的性能测试,简单来讲匿名即没有名字的函数,它和命名函数相比性能如何呢,本文即是对它们性能的测试,需要的朋友可以参考下
    2014-09-09
  • JavaScript中的slice()方法使用详解

    JavaScript中的slice()方法使用详解

    这篇文章主要介绍了JavaScript中的slice()方法使用详解,是JS入门学习中的基础知识,需要的朋友可以参考下
    2015-06-06
  • ParseInt函数参数设置介绍

    ParseInt函数参数设置介绍

    经常用ParseInt函数转换字符串为int数值,ParseInt函数有两个参数可以设置,其中第二个参数可以缺省
    2014-01-01
  • JavaScript函数、闭包、原型、面向对象学习笔记

    JavaScript函数、闭包、原型、面向对象学习笔记

    这篇文章给大家分享了一篇关于JavaScript函数、闭包、原型、面向对象的知识点学习笔记内容,有兴趣的朋友参考下。
    2018-09-09
  • 了解前端理论:rscss和rsjs

    了解前端理论:rscss和rsjs

    在前端开发中,我们会尝试去定一些规则和约定,来让项目质量更高,更易于维护。而对于这些规则和约定,我们也会希望它内容简单,容易理解。下面小编来和大家一起学习一下
    2019-05-05
  • Javascript核心读书有感之表达式和运算符

    Javascript核心读书有感之表达式和运算符

    这篇文章主要介绍了Javascript核心读书有感之表达式和运算符,十分详细,需要的朋友可以参考下
    2015-02-02

最新评论