它在Javascript中的确切含义(分配变量)[重复]
Posted
技术标签:
【中文标题】它在Javascript中的确切含义(分配变量)[重复]【英文标题】:What it exactly means in Javascript (assigning variable) [duplicate] 【发布时间】:2013-05-20 12:39:10 【问题描述】:我有疑问,因为我不确定,也无法在 Stack Overflow 上找到有关此问题的答案。
这到底是什么意思:
variable = variable ||
或类似的东西:
this.pointX = options.pointX || 6;
我知道它分配给variable
一个variable
如果它存在 或empty Object
如果变量不存在但为什么它工作?
||
在这里不是指“或”吗?
【问题讨论】:
这基本上是“空合并”,您可以在此处找到更多信息:***.com/questions/476436/… 和此处:***.com/questions/6439579/… 见***.com/a/6439629/643483 @Cory 就像我说的。我一直在寻找这个答案,但找不到。现在我找到了很多资源来回答我的问题。 @Cory 说句公道话,如果你不知道“null coalescing”这个词,很难搜索“javascript ||” @jerry:非常正确。我认为这些链接会有所帮助。 【参考方案1】:||
像 SQL COALESCE
语句一样有效地工作。
var x = y || z;
意思是:
如果y
评估为“真实”值,则将y
分配给x
。
如果y
的计算结果为“假”值,则将z
分配给x
。
请参阅http://11heavens.com/falsy-and-truthy-in-javascript 了解有关“真实/虚假”的更多详细信息(或只是google 它)。
【讨论】:
【参考方案2】:||
是 or
运算符。
这基本上意味着如果variable
未定义,它会将variable
分配给一个新的对象字面量。
https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Expressions_and_Operators#Logical_operators
【讨论】:
variable
被分配给第二个操作数,只要它的真实性值为false
,而不仅仅是未定义。例如,var s = ""; s = s || "foo";
将导致 s 的值为 "foo"
,即使它已经被定义。【参考方案3】:
||
在这里的意思是 OR:
var x = 5
var x = x || //If v is defined, v = v, else v = (new, empty, object).
//x = 5 since x already was defined
var y = y ||
//y = since y was undefined, the second part is run.
【讨论】:
【参考方案4】:||
运算符返回确定其“真实性”值的实际对象,而不仅仅是布尔值(true
或false
)。它“短路”,因为一旦它可以确定结果,它就会停止。
如果variable
的真实性值为true
,则返回它(因为当true
是or
时,结果是true
)。否则,返回第二个操作数(即使它的真实性值为false
),因为它决定了整个表达式的真实性。
【讨论】:
【参考方案5】:this.pointX = options.pointX || 6;
表示将this.pointX
的值分配给options.pointX
,如果可用(即不为空),否则分配6
的值
【讨论】:
pointX 很可能是 0,这是不真实的。 @DougM 我了解到它也可以是空字符串,NaN,未定义【参考方案6】:|| JavaScript 中的运算符与您会发现的其他一些语言不同。当 JavaScript 求值时 ||它似乎返回一个操作数或另一个。它不会进行典型的真值表评估,如果任何操作数评估为真,则评估为真,否则为假。
【讨论】:
以上是关于它在Javascript中的确切含义(分配变量)[重复]的主要内容,如果未能解决你的问题,请参考以下文章