2012-01-17 37 views
0

當我運行在Firebug這段代碼:螢火蟲:省略輸出在某些情況下

var s ="test"; 
var S=new String(s); 
S.len=4; 
var t = S.len; 
console.log(t); 
typeof(S); 
S; 

它完全忽略了輸出typeof(S); 但是,如果我做的:

var s ="test"; 
    var S=new String(s); 
    S.len=4; 
    var t = S.len; 
    console.log(t); 
    console.log(typeof(S)); 
    S; 

它確實只是對,發生了什麼事?

回答

3

Firebug的日誌給你最後表達式的結果(如調試功能),而不是每個表達。任何通過console.log()當然會轉動起來,你會看到這一點,如果你這樣做

console.log(typeof (S)); 

但在最後一個表達式和結束,總是返回值拋出,而不是前面的人。

這樣的順序:

S; 
typeof (S); 

將產生typeof (S);的返回值,並沒有別的與序列:

typeof (S); 
S; 

將產生的返回值,如果S(這只是S)。由於結果不存儲在你的代碼,它只是運行在表達和摒棄了結果,除了在上述任何序列的最後一個表達式,其中螢火蟲顯示你是什麼結果。這是爲了方便說運行一個jQuery表達式等。

+0

但它顯示了在過去的2個cases..is輸出功能,所有的結果和對象有什麼不同? – tarashish 2012-01-17 14:40:14

+0

我編輯了答案,使其更清晰。如果你想在日誌中輸出,你應該總是使用'console.log()'(儘管如此,IE不支持它並會拋出異常)。 – zrvan 2012-01-17 14:51:43