你能为变量声明添加一个条件吗?

Kay*_*ote 10 javascript variables declaration

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

var abc = def || ghi;
Run Code Online (Sandbox Code Playgroud)

我的问题是,这有效吗?我们可以为变量声明添加条件吗?我想答案是否定的,但我心里想到的是,我曾在代码中看到类似的东西.

Den*_*ret 17

这得到abc的值def如果不是falsy(即不false,null,undefined,0或空字符串),或的值ghi如果不是.

这相当于:

var abc;
if (def) abc = def;
else abc = ghi;
Run Code Online (Sandbox Code Playgroud)

这通常用于选项:

function myfunc (opts) {
    var mything = opts.mything || "aaa";
}
Run Code Online (Sandbox Code Playgroud)

如果你打电话,myfunc({mything:"bbb"})它会使用你给的值."aaa"如果你什么都不提供,它就会用

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

opts = opts || {};
Run Code Online (Sandbox Code Playgroud)


epa*_*llo 6

代码var abc = def || ghi;

是一样的

if (def) { //where def is a truthy value
   var abc = def;
} else {
   abc = ghi;
}
Run Code Online (Sandbox Code Playgroud)

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

if (xxx==="apple") { 
    var abc = def;
} else {
    abc = ghi;
}
Run Code Online (Sandbox Code Playgroud)

作为三元运算符编写的是:

var abc = (xxx==="apple") ? def : ghi;
Run Code Online (Sandbox Code Playgroud)