這是沒有意義的給我,但我有一種感覺,我看到使用這個代碼:你可以給變量聲明添加一個條件嗎?
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'的值。 –