簡體   English   中英

條件/語法混亂

[英]Conditionals/syntax confusion

我有一個問題了解一些JavaScript語法,如下:

var myObject = {
    value: 0;
    increment: function (inc) {
        this.value += typeof inc === 'number' ? inc : 1;
    }
};
myObject.increment(  );
document.writeln(myObject.value);    // 1
myObject.increment(2);
document.writeln(myObject.value);    // 3

特別:

this.value += typeof inc === 'number' ? inc : 1;

這條線是否說:

typeof inc === 'number'

然后:

this.value += inc

任何考慮這個或資源以幫助理解的好方法都將受到贊賞。

這是正確的,它被稱為三元運算符。 如果語句解析為true,則會執行第一個選項,否則會解析第二個選項。 它可以分解為簡單的if / else

if (typeof inc === 'number') this.value += inc;
else this.value++;

這確實是說如果typeof inc === 'number'則將inc添加到this.value ,否則將1添加到this.value 該模式是三元運算符的一個示例,它返回左側:如果條件為真,則右側:如果為false。

三元運算更常用於分配,如:

// Assign the greater of y and z to x (or z if they're equal)
var x = y > z ? y : z;

// equivalent to:
if (y > z) {
  var x = y;
}
else var x = z;

但在這種情況下,它用於將數字返回給+=運算符。

這是三元運營商。

this.value += typeof inc === 'number' ? inc : 1;

是相同的

if (typeof inc === 'number') {
    this.value += inc;
} else {
    this.value += 1;
}

三元運算符只是if / else的簡寫版本。 有時將條件表達式放在括號內有助於更好地查看正在測試的條件:

this.value = (typeof inc === 'number') ? inc : 1;

因此,如果typeof inc導致“number”,則將inc分配給this.value,否則分配1。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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