10

这对我来说没有意义,但我感觉我看到了一个使用这个的代码:

var abc = def || ghi;

我的问题是,这有效吗?我们可以在变量声明中添加条件吗?我想答案是否定的,但我有一个想法,我曾经在代码中看到过类似的东西。

4

4 回答 4

17

这给出了if 它不是 falsyabc的值(即 not 、、或空字符串),或者 if not 的值。deffalsenullundefined0ghi

这相当于:

var abc;
if (def) abc = def;
else abc = ghi;

这通常用于选项:

function myfunc (opts) {
    var mything = opts.mything || "aaa";
}

如果您调用myfunc({mything:"bbb"})它,则使用您给出的值。如果你什么都不提供,它就会使用"aaa"

在这种情况下,为了让调用者完全跳过参数,我们也可以用

opts = opts || {};
于 2012-06-28T18:07:48.827 回答
6

代码变量abc = def || ghi;

是一样的

if (def) { //where def is a truthy value
   var abc = def;
} else {
   abc = ghi;
}

你想要一个像 if 语句这样的条件吗?

if (xxx==="apple") { 
    var abc = def;
} else {
    abc = ghi;
}

写成三元运算符是:

var abc = (xxx==="apple") ? def : ghi;
于 2012-06-28T18:11:24.453 回答
3

的,您可以在变量声明中添加条件

可以这样使用

function greet(person) {
    var name = person || 'anonymouse';
    alert('Hello ' + name);
}
greet('jashwant');
greet();​

jsfiddle 演示

于 2012-06-28T18:07:40.967 回答
0

好的,看,就像,你要么检查一个是否为真。真实的将被退回。:)

var abc = def || ghi;

相当于:

var abc = return (def == true) or (ghi == true)
于 2012-06-28T18:10:01.370 回答