如何在JavaScript中使用嵌入式if
聲明?是否也有內聯else
聲明?如何在JavaScript中編寫內聯IF語句?
事情是這樣的:
var a = 2;
var b = 3;
if(a < b) {
// do something
}
如何在JavaScript中使用嵌入式if
聲明?是否也有內聯else
聲明?如何在JavaScript中編寫內聯IF語句?
事情是這樣的:
var a = 2;
var b = 3;
if(a < b) {
// do something
}
你不一定需要jQuery的。僅JavaScript就可以做到這一點。
var a = 2;
var b = 3;
var c = ((a < b) ? 'minor' : 'major');
c
的變量將是minor
如果值是true
,和major
如果該值是false
。
這被稱爲有條件(三元)運算符。
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Conditional_Operator
嗯,如果你在JavaScript中的意思,那麼你可以這樣做:
a < b ? /*do something*/ : /*do something else*/;
我喜歡這個答案。簡單,並點 – shlomia 2016-02-02 12:17:27
對於寫if
聲明內聯,它裏面的代碼應該只有一個說法:
if (a < b) // code to be executed without curly braces;
<div id="ABLAHALAHOO">8008</div>
<div id="WABOOLAWADO">1110</div>
parseInt($('#ABLAHALAHOO').text()) > parseInt($('#WABOOLAWADO).text()) ? alert('Eat potato') : alert('You starve');
我甚至都不知道我剛纔讀的是什麼,但我很難笑。 – Jazz 2013-02-01 23:27:09
太有趣了+1 – 2013-11-03 12:07:38
用簡單的英文,解釋的語法:
if(condition){
do_something_if_condition_is_met;
}
else{
do_something_else_if_condition_is_not_met;
}
可以寫爲:
condition ? do_something_if_condition_is_met : do_something_else_if_condition_is_not_met;
如果沒有「else」語句就可以做到這一點嗎?即'條件?真正的' – 2017-05-15 18:25:14
要添加到這一點,你也可以內嵌如果條件與& &和使用||運營商。 像這樣
var a = 2;
var b = 0;
var c = (a > b || b == 0)? "do something" : "do something else";
你也可以使用邏輯運算符來近似一個if/else。
(a && b) || c
以上是大致相同的話說:
a ? b : c
當然,大致相同:
if (a) { b } else { c }
我說大概因爲這種方法的一個區別,因爲你必須知道b
的價值會被評估爲真實的,否則你將永遠得到c
。基本上你必須認識到,出現if() { here }
的部分現在是你放置if (here) { }
的條件的一部分。
以上是可能的,因爲傳遞/返回形成邏輯表達式的原始值之一的JavaScript行爲取決於操作符的類型。某些其他語言(如PHP)會繼續執行操作的實際結果,即真或假,表示結果始終爲真或假; e.g:
14 && 0 /// results as 0, not false
14 || 0 /// results as 14, not true
1 && 2 && 3 && 4 /// results as 4, not true
true && '' /// results as ''
{} || '0' /// results as {}
一個主要的好處,與正常的if語句相比,是前兩種方法可以作爲賦值的部分上的自變量即右手側進行操作。
d = (a && b) || c;
d = a ? b : c;
if `a == true` then `d = b` else `d = c`
用一個標準來實現這個if語句將複製分配新建分配FY的唯一方法:
if (a) { d = b } else { d = c }
你可能會問,爲什麼只使用Logical Operators代替Ternary Operator,對於簡單的情況下,你可能止跌除非你想確保a
和b
都是真的。您還可以使用邏輯運算符實現更簡化的複雜條件,使用嵌套的三元運算可能會非常混亂......然後,如果您希望代碼易於閱讀,則這兩者都不那麼直觀。
大拇指的想法,而不使用'if .. else ..'。 http://qr.ae/RwmrBb – 2015-11-12 05:45:25
如果你只是想一個內聯IF(沒有ELSE),您可以使用邏輯運算符:如果你需要一個ELSE也
(a < b) && /*your code*/;
,使用三元操作,其他人建議。
這不是問題的根本:我可以寫下面的內容嗎?
if (foo)
console.log(bar)
else
console.log(foo + bar)
答案是肯定的,上面會翻譯。
但是,要警惕這樣做的以下
if (foo)
if (bar)
console.log(foo)
else
console.log(bar)
else
console.log(foobar)
一定要在大括號包裹曖昧代碼上面會拋出異常(以及類似的排列會產生不希望的行爲。)
僅供參考,您可以撰寫conditional operators
var a = (truthy) ? 1 : (falsy) ? 2 : 3;
如果你的邏輯是足夠複雜,那麼你可以考慮使用IIFE
var a = (function() {
if (truthy) return 1;
else if (falsy) return 2;
return 3;
})();
當然,如果你打算使用這個邏輯不止一次,那麼你有啥可將其封裝在一個功能,以保持整潔,乾燥。
我經常需要使用運行每個條件更多的代碼,:(, ,)
多個代碼元素可以執行:
var a = 2;
var b = 3;
var c = 0;
(a < b ? (alert('hi'), a=3, b=2, c=a*b) : (alert('by'), a=4, b=10, c=a/b));
哪裏jQuery的嗎?無論如何,我並不真正理解這個問題。 – Marc 2012-04-22 17:39:33
jquery的一部分可能是這樣的(文檔)$。就緒(函數(){ VAR一個= 2; 變種B = 3; 如果(A takeItEasy 2012-04-22 17:49:48
它的一個knockoutjs問題也 – 2014-07-17 22:27:33