2017-02-25 59 views
0

這是在目前的谷歌瀏覽器v56.0和Safari V9.1真:爲什麼有些console.log將numberof打印出typeof 1,但有時候會打印爲「number」(引號)?

在調試器控制檯,如果我輸入:

> console.log(1, typeof 1) 
    1 "number" 

> console.log("1", typeof 1) 
    1 number 

爲什麼第一個"number"而第二個是number? (也就是,爲什麼是第一個報價,但第二個是不是?

+0

我認爲這是一個vedor特定問題 –

+0

我與控制檯相同的結果(如oposite我寫第一) –

+0

好吧,我刪除評論 –

回答

0

它看起來像它需要的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" 
+0

這並不意味着被引用 –

0

這不僅僅是typeof,與console.log(1, "1"); & console.log("1", "1");一樣工作。

我認爲這是把報價放在那裏,因爲當你打印兩種不同的類型時,它會爲你區分它們。

0

如果我們看一看the console.log頁MDN,它說明:

OBJ1 ... objN
的JavaScript對象列表輸出。這些對象中的每一個的字符串表示以列出和輸出的順序附加在一起。

因此,在第一實例中,它是組合的整數(1)和一個字符串(typeof 1)。因爲有一個整數,它將兩個值組合在一起,然後將它們轉換爲一個字符串。所以1現在等於字符串; 1typeof 1現在等於typeof 1的輸出字符串,即"number"
因此,得到的字符串是1 "number"

在第二個示例中,1已經是一個字符串,因此它既不會轉換爲字符串,也可以簡單地將它們連接在一起,因此結果如預期的那樣; 1 number

+0

* console *沒有標準化。 MDN是一個公開的wiki,儘管這些建議很有幫助,但它並不是明確的,對於特定於實施的主題,對於某些瀏覽器可能並不正確。 – RobG

相關問題