![](/img/trans.png)
[英]Quickest PHP equivalent of javascript `var a = var1||var2||var3;` expression
[英]How do you read this JavaScript code? (var1 ? var2:var3)
我已經看到了JavaScript代碼中使用的這種格式,但找不到合理的意義來源。
編輯后續行動:
感謝所有快速解答! 我覺得它就像那樣。 現在,獲得獎勵積分:
你能用嗎(var1?var2)
做同樣的事情
if (var1) {
var2
}
?
它被稱為三元 (因為它有三個操作數) 條件 (因為它是if / else / then) 運算符 。
它被計算為一個值,因此您通常會使用它來賦值,例如:
var result = condition ? value1 : value2;
這相當於:
var result;
if (condition == true) {
result = value1;
} else {
result = value2;
}
一個例子:
var message = "Length is " + len + " " + (len==1 ? "foot" : "feet");
注意?:
是完整的操作員。 這不是?
和:
運營商,所以?
在Javascript中,它本身毫無意義。
if(var1) {
var2;
else {
var3;
}
表達式var1 ? var2 : var3
如果var1
被認為具有等於true
的值,則var1 ? var2 : var3
返回var2
的值,否則返回var3
值。
請注意,這與以下內容不完全相同: -
if (var1)
varX = var2
else
varX = var3
由於上述構造本身不能作為較大表達式的一部分出現。
在ternery表達中,作為? :
? :
眾所周知,應該避免允許組件表達式產生副作用,而不是++或 - 運算符的副作用。 例如,這不是一個好主意: -
varX = var1 ? doSomethingSignificant() : doSomethingElseSignificant();
在這種情況下,最好使用if else
構造。 在手上: -
varX = var1 ? calcSomething(var2) : someOtherCalc(var2);
這是可以接受的,假設被調用的函數本身不會顯着地修改程序狀態。
編輯 :
我想我需要重新強化這一點。 為表示對短切不要使用三元運算if
語句。 兩者有不同的目的。 如果你的代碼滿了? :
? :
那應該是if else
它將難以閱讀。 我們希望邏輯流程出現在if
語句中。 我們期待? :
? :
當表達式有一個簡單的邏輯組件時。 注意表達式不會修改事物,只有在分配時才能修改它們的結果。
作為第一個問題的附錄,您也可以使用
var result = (condition) && var1 || var2;
並獲得相同的結果
對於第二個問題,在C中,以下也適用:
(condition) && someinstruction;
但這似乎不適用於JavaScript(至少與我的Firefox版本)。
這似乎是一種三元操作。 if else操作的簡短形式,可以這么說。 點擊此處了解詳情......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.