这是啥通信: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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章