我正在使用JSLint来遍历JavaScript,并且在执行诸如在语句内部进行比较之类的操作时,它返回许多建议以(三个等号)替换==(两个等号)。===idSele_UNVEHtype.value.length == 0if
有没有性能优势,以代替==
用===
?
由于存在许多比较运算符,因此任何性能改进都将受到欢迎。
如果没有进行类型转换,性能会超过==?
身份(===
)运算符的行为与相等(==
)运算符相同,但不进行任何类型转换,并且类型必须相同才能被视为相等。
进行任何必要的类型转换后,==
运算符将比较是否相等。该运营商将不会进行转换,因此,如果两个值是不一样的类型将简单地返回。两者都同样快。======false
引用Douglas Crockford出色的JavaScript:The Good Parts,
JavaScript
有两组相等的运算符:===
和!==
,以及它们的邪恶孪生子==和!=。优秀的产品以你期望的方式工作。如果两个操作数具有相同的类型并具有相同的值,则===
产生true和!==
产生false
。当操作数是相同类型时,邪恶双胞胎会做正确的事情,但是如果操作数是不同类型,则它们会试图强制值。他们所遵循的规则是复杂而难忘的。这些是一些有趣的情况:
'' == '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
传递性的缺乏令人震惊。我的建议是不要使用邪恶的双胞胎。相反,请始终使用
===
和!==
。刚才显示的所有比较都是false由===
操作员进行的。
更新:
@Casebash在评论中和@Phillipe Laybaert 关于引用类型的答案中提出了一个很好的观点。对于引用类型==
,===
彼此之间要保持一致(特殊情况除外)。
var a = [1,2,3];
var b = [1,2,3];
var c = { x: 1, y: 2 };
var d = { x: 1, y: 2 };
var e = "text";
var f = "te" + "xt";
a == b // false
a === b // false
c == d // false
c === d // false
e == f // true
e === f // true
特殊情况是,当你将一个文字与一个对象进行比较时,该对象因其toString
或valueOf
方法而得出的文字相同。例如,考虑将字符串文字与String
构造函数创建的字符串对象进行比较。
"abc" == new String("abc") // true
"abc" === new String("abc") // false
在这里,==操作员正在检查两个对象的值并返回true,但是===看到它们不是同一类型并返回false。哪一个是正确的?这确实取决于你要比较的内容。我的建议是完全绕过该问题,只是不要使用String构造函数来创建字符串对象。
比较运算符用于比较两个表达式的结果。如变量 num 加上变量 offset 是否大于0,大于就是一个比较运算符。 比较运算符还分为相等运算符与关系运算符。 相等运算符: == 相等 != 不相等 === 严格相等 !== 严格不相等 关系运算符: > 大于 >= 大于等于 < 小于 <= 小于等于 运算符返回的都是布尔值。 运算符左右的值也被称为操作数。 1. 相等运算符 相等运算符用于判断运算符
问题内容: 如果我正在从文本中扫描 //我想将行中的下一个char与 // 像这样: 我知道那不存在,但是在这种情况下可以使用任何类似的东西吗? 问题答案: 您的代码将类似于… 请注意,在调用之后,实际上已获取了该值,因此,如果您想进一步使用它,最好保留该变量,例如:
问题内容: 我注意到最近有一段代码直接比较两个整数列表,如下所示: 这似乎有点奇怪,但我想如果所有元素都大于,它将返回,如果每个元素相等或元素大于则返回False 。所以我测试了它: 好的,行得通。和: 但是当它变得更加模糊时: 要么: 结果有点陌生。python实际在做什么?看来它返回的结果偏向于第一个列表,其中最左边的元素大于相应的元素? 问题答案: 从比较序列和其它类型在Python教程:
我有一个检查两个变量引用的代码,我遇到了这个有点混乱的情况: 结果是: 我的第一个问题是为什么第一个和第三个引用相等?如果第三个变量等于第二个变量,它应该是,因为它们的对象引用不相等。 当我将值更改为时,我感到困惑,如下所示: 然后结果变成: 为什么会这样?
问题内容: 稍微打错一下就遇到了这个问题(在Python 2.7.5中): 当它,我不小心爆炸了月亮。 我的理解是相当于和表现良好的类(如内置函数),相当于。 如果没有或运算符,那么我认为Python使用。 但是,这些方法都与工作对象,而与运营商 做 的工作。发生这种情况的原因是什么? 问题答案: 但是,当<和>运算符起作用时,这些方法都不能与函数对象一起起作用。发生这种情况的原因是什么? 在任何
概述 比较运算符用于比较两个值的大小,然后返回一个布尔值,表示是否满足指定的条件。 2 > 1 // true 上面代码比较2是否大于1,返回true。 注意,比较运算符可以比较各种类型的值,不仅仅是数值。 JavaScript 一共提供了8个比较运算符。 > 大于运算符 < 小于运算符 <= 小于或等于运算符 >= 大于或等于运算符 == 相等运算符 === 严格相等运算符 != 不相等运算符