奇怪的三元运算符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
,则
&&
后面的语句的其余部分无关紧要,因此将不进行计算。