我通常使用此代码来查看函数的参数是否未定义
var = (typeof var != "undefined")? var : "othervalue";
但是,其他人使用这个布尔运算符
var = var || "othervalue";
但是,我已经看到如果check和boolean false参数的值没有正确完成。
// assuming it is false
var = var || "othervalue"; // will be "OTHERVALUE"!!!
我需要知道在这种情况下这个运算符到底是什么。
答案 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实体。