3

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

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

但是,其他使用此布尔运算符

var = var || "othervalue";

但是,我已经看到,如果检查值和布尔值 false 参数没有正确完成。

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

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

4

3 回答 3

2

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

于 2013-04-02T04:11:18.163 回答
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
于 2013-04-02T04:23:44.067 回答
0

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

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

myVal = eat_breakfast || eat_dinner || eat_lunch
print myVal

会打印“吃午饭”

它将 myVal 设置为第一个非空/非假实体。

于 2013-04-02T04:13:44.093 回答