我有一个问题需要了解一些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;
这句话是否说:if:
typeof inc === 'number'
然后:
this.value += inc
任何考虑这个或资源以帮助理解的好方法都将受到赞赏。
答案 0 :(得分:1)
这是正确的,它被称为三元运算符。如果语句解析为true,则会执行第一个选项,否则会解析第二个选项。它可以分解为简单的if / else
if (typeof inc === 'number') this.value += inc;
else this.value++;
答案 1 :(得分:1)
的确如此,如果typeof inc === 'number'
则将inc
添加到this.value
,否则将{1}添加到this.value
。该模式是三元运算符的一个示例,如果条件为真,则返回:
的左侧,如果为假,则返回:
的右侧。
三元操作更常用于分配,如:
// 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;
在这种情况下,它用于向+=
运算符返回一个数字。
答案 2 :(得分:1)
它是ternary运营商。
this.value += typeof inc === 'number' ? inc : 1;
与
相同if (typeof inc === 'number') {
this.value += inc;
} else {
this.value += 1;
}
答案 3 :(得分:1)
三元运算符只是if / else的简写版本。将条件表达式放在括号内有时会有助于更好地查看正在测试的条件:
this.value = (typeof inc === 'number') ? inc : 1;
因此,如果typeof inc导致“number”,则将inc指定给this.value,否则指定1。