![](/img/trans.png)
[英]Javascript why console.log(typeof "Not a Number" - "Number") prints 'NaN'?
[英]Why does some console.log print out typeof 1 as number, but sometimes as “number” (quoted)?
在當前的Google Chrome v56.0和Safari v9.1中確實如此:
在調試器控制台中,如果輸入:
> console.log(1, typeof 1)
1 "number"
> console.log("1", typeof 1)
1 number
為什么第一個"number"
,而第二個是number
? (也就是說,為什么第一個引用而不是第二個引用?
看起來它以toString
的調用(在必要時)為模式,用於將下一部分顯示為字符串。
無引號
console.log("1", typeof 1) 1 number console.log("", typeof 1) 1 number console.log("0", typeof 1) 0 number
帶引號
console.log(1, typeof 1) 1 "number" console.log({}, typeof 1) 1 Object {} "number" console.log(false, typeof 1) 1 false "number" console.log(true, typeof 1) 1 true "number" console.log([], typeof 1) 1 [] "number" console.log(() => true, typeof 1) 1 () => true "number" console.log(/./, typeof 1) 1 /./ "number"
它不僅是typeof,而且與console.log(1, "1");
& console.log("1", "1");
。
我認為這是引號,因為當您打印兩種不同類型時,會為您區分它們。
如果我們看一下MDN上的console.log頁面,它說明:
obj1 ... objN
要輸出的JavaScript對象列表。 這些對象的每個字符串表示形式都按列出的順序附加在一起並輸出。
因此,在第一個示例中,它將組合一個整數( 1
)和一個字符串( typeof 1
)。 因為有一個整數,所以它將兩個值組合在一起,然后將它們轉換為字符串。 所以1
現在等於字符串; 1
,和typeof 1
現在等於的輸出的字符串typeof 1
是"number"
。
因此,結果字符串為1 "number"
。
在第二個示例中, 1
已經是一個字符串,因此它既不轉換為字符串,又簡單地將它們彼此串聯,因此結果與預期的一樣; 1 number
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.