我已經看到了這個繞了幾圈,但是我從來不知道是什麼意思。它的名字是什麼,它是如何工作的?
這是我看到的例子:
input.checked = input.type == "radio" ? true : false;
我已經看到了這個繞了幾圈,但是我從來不知道是什麼意思。它的名字是什麼,它是如何工作的?
這是我看到的例子:
input.checked = input.type == "radio" ? true : false;
這個例子中有一個額外的=
,我想你的意思是:
input.checked = input.type == "radio" ? true : false;
(它現在固定)
它指定true
到input.checked
如果input.type == "radio"
,或false
如果它沒有。
這
expression ? trueResult : falseResult
...稱爲條件運算(或有時,「三元」運算符 —技術上,它只是一個三元操作,例如,操作員需要三個操作數)。更多Section 11.12的規格。
在這種情況下,有一個在使用條件操作絕對沒有點,因爲等價表達式的結果是true
或false
無論如何,所以它可能只是寫:
input.checked = input.type == "radio";
...但有很多地方的條件運算符是有用的。例如,假設你想分配1
或2
到x
取決於是否y
爲42:
x = y == 42 ? 1 : 2;
你可以認爲?
作爲要求一個是或否的問題,什麼遵循它作爲「是「回答,並且:
是」否「答案。
「三元」操作符是否需要falseResult值?如果我想要,我可以將它保留嗎? – 0x499602D2
@David:條件表達式('''之前的表達式)的值將被強制爲一個布爾值,如果它不是基於常規JavaScript規則的布爾值(就像在'if'中使用的表達式一樣聲明)。我不確定你的意思是「你能否離開它」。如果你在你的問題中指定'true'或'false',那麼正如我所說的那樣,不需要條件操作符 - 只需將結果直接分配給'checked'。但是,如果您想分配「true」或「false」以外的其他值,那麼在某些情況下,條件運算符是一種方便的方法。 –
@David:哦,對不起,我明白你的意思了。是的,當使用條件運算符時,虛假部分是必需的。你必須在':'和表達式結尾之間有一些東西。否則,使用'if'或者JavaScript(奇怪的強大的''''和'&&'運算符](http://blog.niftysnippets.org/2008/02/javascripts-curiously-powerful-or.html)。 –
也許是更容易理解是這樣的:
input.checked = (input.type == "radio")? true : false;
這基本上是一個如果其他。如果表達式爲真,則input.checked將被設置爲第一個值,否則爲第二個值。
[編輯]
作爲一個說明,在JavaScript中,你應該評估字符串時檢查類型的平等,以及總使用「===」來代替「==」。
不完全 - 請注意input.checked的double ==。這不是一項任務,而是一個比較。 –
啊,錯過了,我編輯了我的答案。感謝您指出。 – Snps
@Jon,我很確定OP有一個錯字。 –
這是一個三元表達式。它是簡寫:
if (input.type == "radio") {
input.checked = true;
} else {
input.checked = false;
}
但是,在這個特定的例子中有冗餘。它可能是簡單地寫爲:
input.checked = input.type == "radio";
三元運算符是否需要一個錯誤的結果值?如果我想要,我可以把它放棄嗎? – 0x499602D2
@大衛是的(對你的第一個問題)。沒有(到你的第二個)。 –
也許第一==
是=
?
它看起來像ternary operator.(短否則,如果結構)
三元運算符是否需要一個錯誤的結果值?如果我想要,我可以把它放棄嗎? – 0x499602D2
在JavaScript中是必需的。你不能做類似'a =(x == 3)的東西? 5;'但你可以這樣做:'a =(x == 3)? 5:a'。這意味着在一個錯誤的結果案例中,「a」將等於「a」 –
你肯定應該有2這裏等號:'input.checked == input.type'? – shanethehat
我希望你沒有看到這種冗餘且沒有教訓的代碼... – hugomg
這是*精確*代碼嗎?它看起來有點懷疑...你有一個URL嗎? – FrustratedWithFormsDesigner