[英]Questions about Coffeescript/Javascript conditional results
我有這個Coffeescript:
console.log 'TEST'
console.log index
console.log (index is not 0)
console.log (index > 0)
unless index is 0
console.log "passed test"
這是編譯的Javascript:
console.log('TEST');
console.log(index);
console.log(index === !0);
console.log(index > 0);
_results.push(index !== 0 ? console.log("passed test") : void 0);
這是控制台輸出
TEST
0
false
false
passed test
TEST
1
false
true
passed test
問題1)為什么index
為1時(index is not 0)
返回false
? (index > 0)
對1返回true
,那么為什么不返回(index is not 0)
?
問題2)為什么unless index is 0
測試時得到通過index
為0?
為什么當
index
為1時(index is not 0)
返回false
?(index > 0)
對1返回true
,那么為什么不返回(index is not 0)
?
CoffeeScript不使用is not
為了不等式,它使用!=
和isnt
。 通過查看已編譯的代碼,我們可以看到它實際上是在將(index is not 0)
解釋為(index is (not 0))
。
為什么
unless index is 0
測試時得到通過index
為0?
當我自己嘗試時 ,測試未通過。 此行為可能是由於您的測試代碼中未包含在帖子中的某些內容引起的。
這很奇怪:
console.log(index === !0);
它的處理方式與:
console.log(index === (!0));
0
是一個偽常量,因此可以將(!0)
替換為true
。 真正的代碼是:
console.log(index === true);
因此,只有在index
為布爾值且沒有類型強制的情況下,它才會記錄為“ true”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.