我使用JSLint通过JavaScript,它返回了许多建议,以取代 ==(两个平等的标志)与 ===(三个平等的标志)当做一些事情,如比较idSele_UNVEHtype.value.length == 0在一个假设声明。
能否取代 = = = = = = =?
任何性能改进都将被欢迎,因为有许多比较运营商。
如果没有类型转换发生,会有超越 ==的性能收益吗?
我使用JSLint通过JavaScript,它返回了许多建议,以取代 ==(两个平等的标志)与 ===(三个平等的标志)当做一些事情,如比较idSele_UNVEHtype.value.length == 0在一个假设声明。
能否取代 = = = = = = =?
任何性能改进都将被欢迎,因为有许多比较运营商。
如果没有类型转换发生,会有超越 ==的性能收益吗?
当前回答
在PHP和JavaScript中,它是一个严格的平等运营商,这意味着它将比较类型和值。
其他回答
问题在于,你可能很容易陷入麻烦,因为JavaScript有很多暗示的转换,这意味着...
var x = 0;
var isTrue = x == null;
var isFalse = x === null;
最好的样本为什么暗示转换是“邪恶”可以从这个代码在MFC / C++,这实际上会由一个暗示转换从CString到HANDLE,这是一个指标类型。
CString x;
delete x;
显然,在工作时间内,它会做一些非常不确定的事情......
谷歌对C++和STL的暗示转换,以获得一些反对它的论点。
这里有一个有趣的视觉化平等之间的比较 ==和 ===。
来源: https://github.com/dorey/JavaScript-Equality-Table(演示,统一演示)
var1 === var2
当使用 === 用于 JavaScript 平等测试时,一切都如同。
此分類上一篇
此分類上一篇: Var1 = Var2
当使用 ==为JavaScript平等测试时,会发生一些 funky 转换。
此分類上一篇
平等在JavaScript中的概述
此分類上一篇
结论:
总是使用 ===,除非你完全了解与 ==发生的 funky 转换。
在这里的答案中,我没有读到什么是平等的意思,有些人会说 === 意味着平等和相同的类型,但这不是真的。
所以,让我们采取下列代码:
var a = [1,2,3];
var b = [1,2,3];
var c = a;
var ab_eq = (a === b); // false (even though a and b are the same type)
var ac_eq = (a === c); // true
在这里相同:
var a = { x: 1, y: 2 };
var b = { x: 1, y: 2 };
var c = a;
var ab_eq = (a === b); // false (even though a and b are the same type)
var ac_eq = (a === c); // true
var a = { };
var b = { };
var c = a;
var ab_eq = (a === b); // false (even though a and b are the same type)
var ac_eq = (a === c); // true
这种行为并不总是显而易见的,有更多的故事,而不是平等和同类。
规则是:
对于值类型(数字): a === b 如果 a 和 b 具有相同的值,并且具有相同的类型,则返回真实。
下一篇:特殊案例...
var a = "12" + "3";
var b = "123";
alert(a === b); // returns true, because strings behave like value types
但是,这个问题怎么样呢?
var a = new String("123");
var b = "123";
alert(a === b); // returns false !! (but they are equal and of the same type)
我以为线条像值类型一样行事吗? 好吧,这取决于你问谁...... 在这种情况下, a 和 b 不是相同的类型. a 是类型对象,而 b 是类型线条。
是啊!重要。
=== 操作员在 javascript 中检查值以及类型,在那里作为 == 操作员只检查值(需要时进行类型转换)。
此分類上一篇
您可以轻松地测试它. 在 HTML 文件中插入跟踪代码并在浏览器中打开它
<script>
function onPageLoad()
{
var x = "5";
var y = 5;
alert(x === 5);
};
</script>
</head>
<body onload='onPageLoad();'>
现在修改 onPageLoad() 方法以警告(x == 5);你会得到真相。
它建议取代 ==与 ===的原因是 ===操作员比 ==更可靠。在我们的背景下可靠的手段 ===也去类型检查. 考虑到最好的编程做法,我们应该总是选择更可靠的功能比不可靠的一个。 再一次,每当我们想到的正是相同的操作员大部分时间,我们是默认考虑类型应该是相同的。