我閱讀了一些關于三元運算子的 SOF 帖子,但我仍然對這個示例感到困惑:
var str = "I want to count";
var counts = {};
var ch, index, len, count;
for (index = 0; index < str.length; index) {
ch = str.charAt(index);
count = counts[ch];
counts[ch] = count ? count 1 : 1; // TERNARY
}
我知道語法是條件?運算式1:運算式2
但我正在嘗試練習并將三元分解為if-else。
不知道應該是什么條件
counts[ch] = count // 這不是條件,它是在賦值...
uj5u.com熱心網友回復:
三元
counts[ch] = count ? count 1 : 1;
這個運算式中的條件不是counts[ch] = count
但只是count
,并且等價于
if (count){
counts[ch] = count 1;
}
else {
counts[ch] = 1;
}
賦值運算式的右側總是首先計算,然后counts[ch]
賦值為count ? count 1 ? 1
.
uj5u.com熱心網友回復:
嗯,這是一個條件。
counts[ch] = count ? count 1 : 1; // TERNARY
對應的 if-else 陳述句:-
if(count) counts[ch] = count 1
else counts[ch] = 1
uj5u.com熱心網友回復:
您將三元與賦值運算式混為一談。
編碼
counts[ch] = count ? count 1 : 1;
也可以寫成
counts[ch] = (count ? count 1 : 1);
// but not (counts[ch] = count) ? count 1 : 1
// that does something entirely different
然后,撰寫匹配的 if/else 變得非常清晰
if (count) {
counts[ch] = count 1;
} else {
counts[ch] = c1;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/490008.html
標籤:javascript 条件运算符
上一篇:資料播種:無法將型別“字串”隱式轉換為“System.DateTime”[MessageBoard]csharp(CS0029)