2012-08-27 122 views
5

在Chrome中,以下爲什麼console.log(true,' t')打印爲「t」?

console.log(true, '\t'); 

將打印

true " " 

爲什麼有行情遊逛?

(注意:console.log(true + '', '\t')將只打印true,以同樣的方式,console.log('a', '\t');將只打印a。)

+0

顯示空白。 – asawyer

+0

不是100%肯定,但我的猜測是因爲\ t是一個表示選項卡的字符串表達式,chrome顯示「」,因此您可以區分它實際上是否正在工作。 –

+0

@asawyer:不會爲'console.log('a','\ t')'發生! – Randomblue

回答

11

基本上有兩種重載到CONSOLE.LOG:

console.log(formatString, args)console.log(arg1, arg2, ...)

更具體地說,根據the source code,如果第一個參數是字符串,則將其視爲其他參數的格式字符串。否則,每個參數都是直接輸出。

因此console.log(true + '', '\t')輸出「真」,因爲第一個參數是一個字符串,並且沒有佔位符\t,和console.log(true, '\t')將輸出這兩個參數,因爲true不是字符串。

+0

非常好的答案。感謝您指向代碼。 – Randomblue

+0

無效鏈接...... – Rohit

2

我決定發揮與它周圍

console.log(true, '\t'); 
true " " 

,然後我試圖相反

console.log(false, '\t'); 
false " " 

不知道爲什麼,但假還給只有一個空格,而真正給退二O_O .. 。如果\t是在開始沒有問題

console.log('\t', true); 
    true 

它也不是m atter後面會發生什麼,但似乎第一個參數,如果它是一般的布爾值,會影響引號後的所有轉義標籤。

console.log(false, '\t', '\t'); 
false " " " " 

所以它肯定有事情做與第一paramater是一個布爾值,因爲如果你用繩子嘗試它,它的行爲完全正常。我猜Google Chrome是一件很古怪的事情?我需要找到實際看到它的源代碼。

+0

1對2空格問題可能是因爲它是一個選項卡並展開以填充選項卡列的其餘部分。 – apsillers

相關問題