理解 JavaScript 的真假

IT技术 javascript
2021-01-30 19:53:22

有人可以使用以下示例数据解释 JavaScript Truthy 和 Falsy。我已经阅读了其他线程,但仍然感到困惑。

var a = 0;

var a = 10 == 5;

var a = 1; 

var a = -1;

根据我的理解,我相信这var a = 1;是唯一的真理,其余的都是假的 - 这是正确的吗?

6个回答

根据我的理解,我认为 var a = 1; 是唯一的真的,其余的都是假的 - 这是正确的吗?

不。

  1. 变量 a = 0;

    数字零是假的但是,请注意字符串零"0"是真实的。

  2. var a = 10 == 5;

    这是一样的var a = (10 == 5);,所以这是假的

  3. 变量 a = 1;

    var a = -1;

    包括负数在内的任何非零数都是true

引自MDN

在 JavaScript 中,值是在布尔上下文中计算时转换为真的值。所有值均为truthy除非它们被定义为falsy(即,除了false0""nullundefined,和NaN)。

JavaScript 中的假值列表:来自 MDN

  1. false
  2. null
  3. undefined
  4. 0
  5. NaN
  6. '', "", ``(空模板字符串)
  7. document.all
  8. 0n: 大整数
  9. -0
@Cludiu过去曾被用于浏览器检测,HTML 规范在这里定义了故意违反 ECMAScript 标准的行为,以保持与遗留代码的兼容性(或在不首先检查其存在的情况下使用:)document.allif (document.all) { // Internet Explorer code here }document.alldocument.all.foo
2021-03-16 19:53:22
@Tushar:那真是太棒了......同时又精彩又可怕。
2021-03-20 19:53:22
说到骗子,我很确定这个也被涵盖了:)
2021-03-20 19:53:22
嗨@DaveNewton,除此之外的其他条件var a = 10 == 5;肯定包含在如此欺骗中所以,IMO 不应该被关闭作为欺骗。
2021-03-30 19:53:22
document.all到底为什么是假的??
2021-04-08 19:53:22

有一种简单的检查方法,您现在和永远都可以使用:

function truthyOrFalsy(a) {
    return a ? "truthy" : "falsy";
}

以机智:

> truthyOrFalsy(0)
"falsy"
> truthyOrFalsy(10 == 5)
"falsy"
> truthyOrFalsy(1)
"truthy"
> truthyOrFalsy(-1)
"truthy"

另请参阅JavaScript 中所有 falsey 值的列表

Truthy -> 在布尔上下文中解析为 true 的值

Falsy -> 在布尔上下文中解析为 false 的值


为了更好地理解,下面给出了 `falsy` 值。
  1. false
  2. 0
  3. empty string
  4. null
  5. undefined
  6. NaN

假的

  • 错误的
  • 0(零)
  • "", '', ``(空字符串)
  • 空值
  • 不明确的
  • NaN(不是数字)

注意:空数组 ([]) 不是假的

真实

  • 一切都不是 FALSY

在JavaScript中,&&||并不总是产生一个布尔值。两个运算符始终返回其操作数表达式之一的值。使用双重否定!!Boolean函数,可以将“真”和“假”值转换为正确的布尔值。

true && true =>
true

true && false =>
false

true && 'rahul626'=>
"rahul626"

true && 'i am testing Truthy' && ' upvote it'=>
" upvote it"

试试,在控制台上试过

在这里描述得很好

真值指的是在布尔上下文中使用的对象,而不是返回真或假的布尔值。
2021-04-01 19:53:22