这是没有意义的给我,但我有一种感觉,我看到使用这个代码:你可以给变量声明添加一个条件吗?
var abc = def || ghi;
我的问题是,这是有效的?我们可以给变量声明添加一个条件吗?我想,答案是否定的,但我有这个想法,我在代码中看到过类似的东西。
这是没有意义的给我,但我有一种感觉,我看到使用这个代码:你可以给变量声明添加一个条件吗?
var abc = def || ghi;
我的问题是,这是有效的?我们可以给变量声明添加一个条件吗?我想,答案是否定的,但我有这个想法,我在代码中看到过类似的东西。
这给予abc
的def
的价值,如果它不是” t falsy(即不是false
,null
,undefined
,0
或空字符串),或者ghi
的值如果不是。
var abc;
if (def) abc = def;
else abc = ghi;
这是常用的选项:
到这相当于
function myfunc (opts) {
var mything = opts.mything || "aaa";
}
如果你打电话myfunc({mything:"bbb"})
它用你给的值。如果你不提供任何东西,它使用"aaa"
。
在这种情况下,为了让呼叫者完全跳过参数,我们也已经开始函数
opts = opts || {};
是,您可以添加条件变量声明
您可以使用它像这样,
function greet(person) {
var name = person || 'anonymouse';
alert('Hello ' + name);
}
greet('jashwant');
greet();
好了,看,这是一样的东西,你要么检查,如果有一个为真。真实的将被退回。 :)
var abc = def || ghi;
等同于:
var abc = return (def == true) or (ghi == true)
小心。你的答案意味着这个操作总是分配一个布尔值。这只是** **如果'def'和'ghi'是布尔值的话。在任何情况下,'abc'都会假设'ghi'的值(不论那个值是什么)_unless'def'评估为true_。如果'def'是“hello”,那么abc将是“hello”(不是booelan)。如果'def'是false/empty/zero/undefined /等,'ghi'是“world”,那么'abc'将会是“world”(同样不是布尔值)。 – user113215
代码变种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;
刚刚看到了我昨天看到的一个活生生的例子(javascript hoist)。即使在你的第一个例子中'def'是错误的,'abc'也不是全局的。我对吗 ? – Jashwant
'abc'可以是全局的,只取决于它的定义。 – epascarello
1。如果“def”计算结果为true,可能会更准确,因为如果它是“0”,空字符串,“false”等,那么'abc'将得到'ghi'的值。 –