[英]Weird ternary operator Javascript
我試圖了解三元運算符的工作方式,並遇到了以下示例:
b.d >= mystr.length && (function1(b, a), a=0);
這是什么意思? 像AND運算符一樣使用嗎? 這如何轉化為常規陳述? a = 0之前的昏迷是什么意思? 謝謝!
那不是三元。
此外,該分組運算符內的逗號基本上可確保該分組始終返回最后一個表達式a=0
,即0。
該示例將始終為false或0(錯誤)。
編輯:
為了完整起見,下面是一個三元運算符:
a > b ? functionIfTrue() : functionIfFalse();
從邏輯上講,它等同於:
if ( a > b ){
functionIfTrue();
} else {
functionIfFalse();
}
&&
是AND運算符。 如果左邊為真,則評估右邊(並返回)。 ,
是逗號運算符。 (逗號運算符從左到右評估其兩側,並返回右側)。 所以這段代碼就像:
if (b.d>=mystr.lengh) {
function1(b,a);
a=0;
}
(除了您的代碼返回0)
(我的母語是C
,所以也許我錯了,但是我認為在這種情況下,javascript可以像C一樣工作)
&&
運算符是邏輯AND運算符。 它從左到右評估表達式,並返回第一個false值或最后一個表達式的值。
如果到達最后一個表達式,則返回其值,無論是什么值。
所以:
var x = (1 < 2) && ( 4 > 3) && 'fred';
將x設置為“ fred”,而:
var y = (1 < 2) && 0 && 'fred';
將y設置為0
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.