首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在JS中,if (条件)是指== true或=== true

在JS中,if (条件)是指== true或=== true
EN

Stack Overflow用户
提问于 2013-07-26 14:14:31
回答 8查看 19.2K关注 0票数 5

我知道=====的区别,但是我一直认为if (condition) condition应该使用严格等式(===)而不是类型胁迫等式(==)来评估true

见一个例子:

代码语言:javascript
运行
复制
if (1) {
    console.log("1");
}

if (1 == true) {
    console.log("2");
}

if (1 === true) {
    console.log("3");
}

它返回:

代码语言:javascript
运行
复制
::1
::2

我知道1并不严格等于true,因为类型不同,但是当我根据W3C执行if (condition)时,应该是严格的等式测试(===),而不是==的类型强制相等。

那么为什么是日志1呢?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-07-26 14:23:00

if语句使用condition == true。它是在ECMAScript语言规范中给出的,在这里:http://www.ecma-international.org/ecma-262/5.1/#sec-12.5

注意步骤2中ToBoolean()的使用,这会将给定的参数转换为布尔值,这意味着if语句的条件确实会发生类型强制。

票数 10
EN

Stack Overflow用户

发布于 2013-07-26 14:24:40

Javascript a.k.a.ECMAScript不是由W3C管理,而是由W3C管理。您可以阅读规范这里。您感兴趣的是部分,它指定如何处理if语句中的表达式。运行时应该对表达式值调用toBoolean;这意味着任何类型都将转换为布尔值。

因此,它的行为类似于==

票数 5
EN

Stack Overflow用户

发布于 2013-07-26 14:17:54

因为===是严格的比较运算符。

代码语言:javascript
运行
复制
if (1 === true) { //they are of a different type

你试过这个吗?

代码语言:javascript
运行
复制
if (0) {  // This fails
    console.log("1");
}

因为0 = off, negative, no, false普遍存在。检查这个为什么0是假的?

而当你使用===的时候

代码语言:javascript
运行
复制
if( 1 === true)  //It looks for type 1 as number and true as boolean

ES5规范定义了以下算法:

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17883717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档