相等与比较
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
上面的表格展示了强类型转换,这也是使用 ==
被广泛认为是不好编程习惯的主要原因,
由于它的复杂转换规则,会导致难以跟踪的问题。
此外,强制类型转换也会带来性能消耗,比如一个字符串为了和一个数组进行比较,必须事先被强制转换为数字。
严格等于操作符
严格等于操作符由三个等号组成:===
不想普通的等于操作符,严格等于操作符不会进行强制类型转换。
"" === "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
new String('foo') === 'foo'; // false
new Number(10) === 10; // false
var foo = {};
foo === foo; // true
这里等于操作符比较的不是值是否相等,而是是否属于同一个身份;也就是说,只有对象的同一个实例才被认为是相等的。
这有点像 Python 中的 is
和 C 中的指针比较。
结论
强烈推荐使用严格等于操作符。如果类型需要转换,应该在比较之前显式的转换,
而不是使用语言本身复杂的强制转换规则。
分享到:
相关推荐
PHP, MySQL & JavaScript All-in-One For Dummies 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
JavaScript教程--从入门到精通(PPT精简版).ppt
javascript4-2 javascript4-2 javascript4-2 javascript4-2 javascript4-2
javascript加强--传智播客--蔡世友
JavaScript教程--从入门到精通
LoadMod ( 'https://rawgit.com/yannprada/cookie-garden-helper/master/cookie-garden-helper.js' ) ; } ( ) ) ; 这个怎么运作 首先,点击花园/农场底部的“ Cookie Garden Helper ”按钮。 在这里,您可以配置您...
JavaScript--从入门到精通 ppt版
JavaScript手册--中文
4. **类型**: 探讨了相等与比较、`typeof`操作符、`instanceof`操作符、类型转换等,这些都是处理数据类型时必须理解的概念。 5. **核心概念**: 强调了避免使用`eval`的重要性,解释了`undefined`和`null`的区别,...
最近因为常常需要写javascript代码,但是我在这方面没什么研究,只好在网上拼命的找,可惜网上让人感觉还可以的javascript参考实在太少,这是我找到的比较全面和严谨的且包含很多中文的部分。
《深入解析org.mozilla.javascript-1.7.2.jar》 在Java开发中,JavaScript引擎的使用日益广泛,其中Mozilla的Rhino引擎是备受开发者青睐的一款。本文将围绕"org.mozilla.javascript-1.7.2.jar"这个资源包,详细讲解...
希望大家喜欢doc的
目前仅有的讲JavaScript的测试驱动开发的书,英文版,Amazon书评4星级的好书。