如何工作布尔运算符||

时间:2013-04-02 04:10:04

标签: javascript boolean operators

我通常使用此代码来查看函数的参数是否未定义

var = (typeof var != "undefined")? var : "othervalue"; 

但是,其他人使用这个布尔运算符

var = var || "othervalue";

但是,我已经看到如果check和boolean false参数的值没有正确完成。

// assuming it is false
var = var || "othervalue"; // will be "OTHERVALUE"!!!

我需要知道在这种情况下这个运算符到底是什么。

3 个答案:

答案 0 :(得分:2)

它返回终止条件的最后一个表达式。它与检查typeof arg == "undefined"的工作方式不同,因为左侧的任何假值都会跳转到RHS。

答案 1 :(得分:1)

||如果第一个表达式是错误的,运算符将返回最后一个表达式:

var test  = first || "second";
// error will be raised, because first variable is not defined

var first;
var test  = first || "second";
// test   = "second", because first is falsely

var first = "first";
var test  = first || "second";
// test   = "first"

我总是使用带有typeof表达式的三元运算符,因为忘记定义一些变量是非常常见的事情:

var test  = 'undefined' != typeof(first) && first ? first : "second";
// test   = first if first is defined and true

答案 2 :(得分:0)

我相信这是第一个真实的perl样式选择(下面的伪代码)

eat_breakfast = null
eat_dinner = null
eat_lunch = "eating lunch"

myVal = eat_breakfast || eat_dinner || eat_lunch
print myVal

打印"吃午餐"

它会将myVal设置为第一个非null /非false实体。