相等与比较
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删除 查看此书详细信息请在美国亚马逊官网搜索此书
在“photoshop-cc-javascript-ref-2015.pdf”中,你将找到详细的API参考,每个函数和对象的说明,以及示例代码,帮助你理解和掌握如何在实际项目中运用JavaScript。同时,该文档通常会包含错误处理和最佳实践的建议...
javascript4-2 javascript4-2 javascript4-2 javascript4-2 javascript4-2
LoadMod ( 'https://rawgit.com/yannprada/cookie-garden-helper/master/cookie-garden-helper.js' ) ; } ( ) ) ; 这个怎么运作 首先,点击花园/农场底部的“ Cookie Garden Helper ”按钮。 在这里,您可以配置您...
JavaScript教程--从入门到精通
JavaScript--从入门到精通 ppt版
JavaScript手册--中文
4. **类型**: 探讨了相等与比较、`typeof`操作符、`instanceof`操作符、类型转换等,这些都是处理数据类型时必须理解的概念。 5. **核心概念**: 强调了避免使用`eval`的重要性,解释了`undefined`和`null`的区别,...
最近因为常常需要写javascript代码,但是我在这方面没什么研究,只好在网上拼命的找,可惜网上让人感觉还可以的javascript参考实在太少,这是我找到的比较全面和严谨的且包含很多中文的部分。
JavaScript 教程--从入门到精通(PPT 精简版) 本节课程为初学者提供了 JavaScript 的基本概念、特点、优点和编程技术,旨在帮助学习者快速掌握 JavaScript 的基础知识和编程技能。 一、JavaScript 概述 JavaScript...
目前仅有的讲JavaScript的测试驱动开发的书,英文版,Amazon书评4星级的好书。
《深入解析org.mozilla.javascript-1.7.2.jar》 在Java开发中,JavaScript引擎的使用日益广泛,其中Mozilla的Rhino引擎是备受开发者青睐的一款。本文将围绕"org.mozilla.javascript-1.7.2.jar"这个资源包,详细讲解...
JavaScript Bible - Gold Edition.pdf JavaScript圣经-黄金版
JavaScript手册-中文,学习JS的工具。
尽管JavaScript在语法上与Java有些相似,但实际上两者并无太大关联。 随着JavaScript的广泛应用,ECMA(欧洲计算机制造商协会)组织制定了JavaScript的标准规范——ECMAScript。ECMAScript定义了JavaScript的核心...
javascript-obfuscatorJS编码器