日期:2014-05-16  浏览次数:20360 次

【解惑】你知道javascript中的“===”怎么用吗?

“软件编程中最重要的操作之一在于判断俩个变量是不是相同” - 来自Nicholas Zakas的书JavaScript for Web Developers.

换句话说,可能在你的编程中,你可能用过这些代码片段吧:

if (x == y) {
??? // do something here
}

或者你使用最佳实践方式:

if (x === y) {
??? // do something here
}

以上代码片段中不同的地方在于第二个例子使用了“===”操作符,也叫“严格等于”或者“绝对等于”。

对于Javascript新手来说呢,什么时候使用双等于号,或者什么时候使用三等于号确实有点儿迷糊。这里今天这篇文章我们将帮助大家了解这背后的故事。

有没有区别?

使用双等于号操作符的话,如果两者相等的话,结果会返回true。但是大家要注意:如果是不同类型的变量比较的话,变量强制变换就会发生。当然,这也是javascript语法的特点之一。

每 一个javascript的变量都属于一个指定的类型。例如,数字,boolean,功能和对象。如果你比较一个字符串和数字,浏览器就会在比较之前将字 符串强制的转化为数字。同样,如果你将true或者false和数字比较的话。true和false会被强制转化为数字1或者0。

这将会带来不可预知的结果,如下:

console.log(99 == "99"); // true
console.log(0 == false); // true

当然,以上例子非常不错,因为浏览器将帮助你自动转化,省了你不少劲儿。但是这有可能出错,如下:

console.log(' \n\n\n' == 0); // true
console.log(' ' == 0); // true

因为如上原因,javascript的高手都推荐你使用“===”来执行等于操作。永远不要使用“==”。

“===”永远不执行类型转化。因为你使用它来执行等于操作非常安全。

以下例子将都产生正确的结果:

console.log(99 === "99"); // false
console.log(0 === false); // false
console.log(' \n\n\n' === 0); // false
console.log(' ' === 0); // false

不等于如何操作呢?

类似,只不过这里我们使用“!==”来执行。如下:

console.log(99 !== "99"); // true
console.log(0 !== false); // true
console.log(' \n\n\n' !== 0); // true
console.log(' ' !== 0); // true

(转载请注明出处:[url=http://www.tdtf.org]易博网[/url][url=http://www.k5048.com]博彩网[/url])