簡體   English   中英

有關Coffeescript / Javascript條件結果的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM