首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript Truthy / Falsy操作

Javascript Truthy / Falsy操作
EN

Stack Overflow用户
提问于 2018-02-14 12:39:28
回答 4查看 122关注 0票数 1

我有一个关于javascript truthy / falsy的问题。

据我所知,包括负数在内的任何非零数都是真实的。但如果是这样,那为什么

代码语言:javascript
复制
-1 == true //returns false

但同时也

代码语言:javascript
复制
-1 == false //returns false

有人能说点什么吗?我会很感激的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-02-14 12:44:49

当使用带有数字操作数和布尔操作数的==运算符时,首先将布尔操作数转换为数字,并将结果与数字操作数进行比较。这使你的发言相当于:

代码语言:javascript
复制
-1 == Number(true)

代码语言:javascript
复制
-1 == Number(false)

这反过来又是

代码语言:javascript
复制
-1 == 1

代码语言:javascript
复制
-1 == 0

这说明了为什么您总是看到一个false结果。如果强制将转换发生在数值操作数上,则得到所需的结果:

代码语言:javascript
复制
Boolean(-1) == true //true
票数 6
EN

Stack Overflow用户

发布于 2018-02-14 12:45:39

不,布尔值或者是0 (false),或者是1(真)。

下面是一个示例:

代码语言:javascript
复制
console.log(0 == false); // returns true => 0 is equivalent to false
console.log(1 == true); // returns true => 1 is equivalent to true
console.log(-1 == false); // returns false => -1 is not equivalent to false
console.log(-1 == true); // returns false => -1 is not equivalent to true

票数 1
EN

Stack Overflow用户

发布于 2018-02-14 12:49:58

任何非零数字计算为真,零计算为false。这不等于真/假。

在这里执行下面的代码(用不同的值替换-1 )可以帮助您理解这一点:

代码语言:javascript
复制
if (-1) {
    true;
} else {
    false;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48787470

复制
相关文章

相似问题

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