这是啥通信:my_var = my_var || 69 [重复]

Posted

技术标签:

【中文标题】这是啥通信:my_var = my_var || 69 [重复]【英文标题】:What is this communicating: my_var = my_var || 69 [duplicate]这是什么通信:my_var = my_var || 69 [重复] 【发布时间】:2013-05-04 22:59:29 【问题描述】:

我在一个 javascript 示例中看到了这一点

my_var = my_var || 69

我认为这意味着检查 my_var 是否存在,如果不存在则将 my_var 设置为 69。是这样吗?有这方面的任何文档吗,很难表示为 google/SO 搜索,有人可以指出我的文档方向或重复 QA 吗?

(示例中没有使用69,那只是我粗心)

【问题讨论】:

你可能会觉得这些问题很有趣:***.com/q/894860/1169798 和 ***.com/q/894860/1169798 请注意,这是一个坏主意,因为它不适用于 my_var 的错误值,它们将被覆盖。 它不检查my_var 是否存在。如果my_var 不存在,您将得到ReferenceError: my_var is not defined 【参考方案1】:

|| or 运算符有两个操作数(左和右)。它检查左侧的值是否为真,如果是,则将其分配给变量,否则将右侧的值分配给变量。

var my_var = false;
my_var = my_var || true;
//true

【讨论】:

【参考方案2】:

大多数时候它被称为“默认”。值“默认”为|| 之后的值。该操作是松散的比较,就像您使用==if 语句所做的那样。

任何不虚假的东西:

假 空字符串 ('') 空 未定义 0 NaN

被认为是真的。如果第一个值不是这些值中的任何一个,那么它就是分配的值。如果是,则分配右侧的值。

【讨论】:

【参考方案3】:

在 JS 控制台中很容易尝试。

var my_var
my_var = my_var || 69
//69

var my_var = 5
my_var = my_var || 69
//5

仅当变量当前带有 falsy 值时,您才设置该变量。

Falsy values in JS are:

    false null undefined 空字符串'' 数字0 数字NaN

【讨论】:

+1 表示“虚假”。如果 my_var 尚未设置,人们经常使用它来设置默认值,但重要的是要记住,一旦 0 或 NaN 是此变量的可接受值,它就不会按预期工作。

以上是关于这是啥通信:my_var = my_var || 69 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在条件中使用打字稿变量

<?php ?> ……<?php ?>中的 是啥作用?谢谢

linux修改环境变量

Django:在块外带有标签

大多数pythonic方式分配和访问可空对象

在 I18n 插值中使用另一个 I18n 键