什么是正确使用||在javascript中

时间:2012-07-11 06:31:09

标签: javascript

在下面的代码中,因为s为null d =“test” 但如果s =“你好”那么d就会=“你好”。

这是正确的吗?什么是正确的使用方式||

var s = null;

var d = s || "test";

alert(d);

6 个答案:

答案 0 :(得分:3)

||是“或”;并且理解这里发生的事情有点诡计

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

将“result”为真(因为b为真)。会发生什么:

  • 'a'被选中 - 它是假的
  • 'b'在AFTERWARDS之后被检查(因为还没有获得“真实”结果,并且一个“真实”结果足以使整个||运算符成为真) - 它的值将被赋值给左边侧

如果你有

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

结果将产生真实;因为“||”

的逻辑不需要检查其他值

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

将首先检查a - 它为null,转换为“false”。 b是“test”,它是非null,并转换为“true”。所以b的将被分配。

是的,这是使用||的正确方法;您使用的功能也称为短路评估(因为它会尽快停止评估布尔表达式)

答案 1 :(得分:2)

这样可行,但如果s评估为'falsy'值,您将获得默认值,这可能不是您想要的。

是一个更健壮,但更生气的习语
d = (typeof s === "undefined") ? "test" : s;

答案 2 :(得分:1)

是正确的,除非允许s为空或0也是假值

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

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

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

所有这些都会导致d成为“测试”

答案 3 :(得分:1)

||是一个逻辑运算符。当s不为null时,(s)的条件为真,所以d被赋值为s,否则赋值为'test'

答案 4 :(得分:1)

||是javascript中的OR运算符 所以a||b简单来说就是a OR b 你问过的问题的解释是你只是在js中做这些事情,你最终会进入其他区块

if(null)
if(undefined)

所以s||"test"意味着哪个不是null或未定义 在这种情况下是测试

答案 5 :(得分:1)

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