簡體   English   中英

你怎么看這個JavaScript代碼? (var1?var2:var3)

[英]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中,它本身毫無意義。

它是一個條件運算符。

它是

如果var1則var2否則var3

在這里閱讀更多

條件運算符

條件運算符是唯一需要三個操作數的JavaScript運算符。 此運算符經常用作if語句的快捷方式。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM