[英]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.