簡體   English   中英

為什么有些console.log將typeof 1打印為數字,但有時卻打印為“數字”(帶引號)?

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

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