2012-07-11 178 views
0

在下面的代码,因为s为null d =“测试” 但如果s =“你好”,则d =会“你好”。||的正确用法是什么?在javascript

这是正确的,因为它的工作原理?什么是使用||的正确方法

var s = null; 

var d = s || "test"; 

alert(d); 

回答

3

||是“还是”;和了解这里发生的事情是有点取巧

var a=false; 
var b=true; 
result=a||b 

会给“结果”真(如b为真)。什么情况是:

  • “一个”检查 - 它是假的
  • “B”是以后的检查(因为没有“真”的结果已获得呢,和一个“真实”的结果就足以让整个||运算符是真实的) - 它的价值将被分配到左边

,如果你有

var a=true; 
    var b="test"; 
    result=a||b 

结果将产生真实的;因为没有其他值需要通过“||”的逻辑来检查

var a=null; 
var b="test"; 
result=a||b; 

一会首先检查 - 它为null,它转换为 “假”。 b是“test”,它是非空的,并且转换为“true”。因此b的将被分配。

是的,这就是用正确的方式|| ;您使用该功能也被称为短路计算(因为它停止尽早评估布尔表达式)

1

是除非她被允许为空白或0它是正确的,其也falsy值

var s = null; 
var d = s || "test"; 

var s = 0; 
var d = s || "test"; 

var s = ""; 
var d = s || "test"; 

所有会导致d为“测试”

1

||是一个逻辑运算符。如果s不为空,则(s)的条件为真,因此d被赋予s的值,否则它被赋值'test'

2

这是有效的,但是如果s评估为'falsy'值,会得到你的默认值,这可能不是你想要的。更健壮,但罗嗦成语是

d = (typeof s === "undefined") ? "test" : s; 
1

||OR运营商在JavaScript
所以a||b意味着简单来说a OR b你问问题的
的解释是,ID,你根本就出头像这样在JS您将在else块最终得到

if(null) 
if(undefined) 

所以s||"test"将意味着其永远不为空或未定义 在这种情况下是测试

1

是正确的,||符号只是做OR的工作。当第一个条件是真的时,它会返回那一个..否则它会移动到下一个...简单,因为它是...