奇怪的三元运算符Javascript
我试图了解三元运算符是如何工作的,我遇到了以下示例:奇怪的三元运算符Javascript,javascript,ternary,Javascript,Ternary,我试图了解三元运算符是如何工作的,我遇到了以下示例: b.d >= mystr.length && (function1(b, a), a=0); &&是什么意思?它是否像AND运算符一样使用?如何将其转换为常规语句?a=0之前的昏迷是什么意思?谢谢 运算符是逻辑AND运算符。它从左到右计算表达式,并返回第一个假值或最后一个表达式的值 如果它到达最后一个表达式,它将返回其值,不管它是什么 因此: var x=(13)和&“fred”; 将x设置为“fred”,而: va
b.d >= mystr.length && (function1(b, a), a=0);
&&是什么意思?它是否像AND运算符一样使用?如何将其转换为常规语句?a=0之前的昏迷是什么意思?谢谢 运算符是逻辑AND运算符。它从左到右计算表达式,并返回第一个假值或最后一个表达式的值 如果它到达最后一个表达式,它将返回其值,不管它是什么 因此:
var x=(1<2)和&(4>3)和&“fred”;
将x设置为“fred”,而:
var y = (1 < 2) && 0 && 'fred';
var y=(1<2)和&0&&fred;
将y设置为
0
,&&
运算符是逻辑AND运算符。它从左到右计算表达式,并返回第一个假值或最后一个表达式的值
如果它到达最后一个表达式,它将返回其值,不管它是什么
因此:
var x=(1<2)和&(4>3)和&“fred”;
将x设置为“fred”,而:
var y = (1 < 2) && 0 && 'fred';
var y=(1<2)和&0&&fred;
将y设置为
0
&&
是AND运算符。如果左侧为true,则计算右侧(并返回)。,
是逗号运算符。(逗号运算符从左到右计算其两侧,并返回右侧)。所以这个代码是这样的:
if (b.d>=mystr.lengh) {
function1(b,a);
a=0;
}
(除了您的代码返回0)
(我的母语是
C
,因此可能我错了,但我认为在这种情况下,javascript的工作方式与C类似)&&
是AND运算符。如果左侧为true,则计算右侧(并返回)。,
是逗号运算符。(逗号运算符从左到右计算其两侧,并返回右侧)。所以这个代码是这样的:
if (b.d>=mystr.lengh) {
function1(b,a);
a=0;
}
(除了您的代码返回0)
(我的母语是C
,所以可能我错了,但我认为在这种情况下,javascript的工作方式与C类似)这不是三元语言
此外,分组运算符中的逗号基本上确保组始终返回最后一个表达式a=0
的值,即0
该示例将始终计算为false或0(这是falsy)
编辑:
为了完整起见,这里有一个三元运算符:
a > b ? functionIfTrue() : functionIfFalse();
它在逻辑上与:
if ( a > b ){
functionIfTrue();
} else {
functionIfFalse();
}
那不是三元的
此外,分组运算符中的逗号基本上确保组始终返回最后一个表达式a=0
的值,即0
该示例将始终计算为false或0(这是falsy)
编辑:
为了完整起见,这里有一个三元运算符:
a > b ? functionIfTrue() : functionIfFalse();
它在逻辑上与:
if ( a > b ){
functionIfTrue();
} else {
functionIfFalse();
}
这不是一个三元运算符。&&is和,就像在许多语言中一样。但同样,这段代码的副本是不可思议的不可读代码。谁编写这样的代码?ಠ_ಠ这不是一个三元运算符。&&is和,就像在许多语言中一样。但同样,这段代码的副本是不可思议的不可读代码。谁编写这样的代码?ಠ_ಠ谢谢你能告诉我这是一个正常的说法吗?“>=”是什么意思?这不是三元运算符吗?在什么条件下调用函数?
=
表示“大于或等于”。三元运算符是编写if/else语句的一种简写方式。在这种情况下,只有当mystr.length
小于b.d
的值时,才会调用function1
。如果mystr.length
不小于b.d
,则&&
后面的语句的其余部分无关紧要,因此将不进行计算。谢谢。你能告诉我这是一个正常的说法吗?“>=”是什么意思?这不是三元运算符吗?在什么条件下调用函数?=
表示“大于或等于”。三元运算符是编写if/else语句的一种简写方式。在这种情况下,只有当mystr.length
小于b.d
的值时,才会调用function1
。如果mystr.length
不小于b.d
,则&&
后面的语句的其余部分无关紧要,因此将不进行计算。