2017-08-14 36 views
2

我希望我可以登錄到控制檯乘以變量的數字的結果,但我得到NaN作爲使用Javascript時的結果。javascript中的一個console.log內乘以一個變量的數字

我嘗試:

var div = Number(console.log(10/50)); //returns 0.2 
typeof div //number 
console.log(div * 100); //returns NaN 

我也試過

var div = Number(console.log(10/50)); //returns 0.2 
typeof div //number 
console.log(Number(div) * 100); //returns NaN 

爲什麼會發生,我應該如何避免呢?

+0

你可以定義自己的函數'自來水= X =>(執行console.log(X),X)',並用它來代替console.log'var div = Number(tap(10/50));' –

+0

謝謝,但是我正在尋找的東西需要我逐步記錄結果。這個解決方案只會給我最後的結果。 – pedrez

+0

它會給你使用這個功能的任何結果。 –

回答

5

console.log()函數返回undefined,所以Number(console.log(anything))將始終爲NaN。您的代碼假定console.log()返回它寫入瀏覽器開發者控制檯的值,但事實並非如此。

此外,可能直觀地反駁,NaN是一個數字,所以typeof NaN是「數字」。你的代碼測試了Number(console.log())的返回值,它實際上是一個數字,但是這個數字是NaN

1

console.log()不返回一個數字,所以你會得到一個NaN錯誤。

可以代替做:

var div = Number(10/50); 
 
console.log(div * 100);

希望這有助於!

+0

謝謝!它回答了我可以如何以簡單,直接的方式避免它。 – pedrez

2

console.log只有顯示結果並返回undefined

直接嘗試:

var div = Number(10/50); 

var div = Number(10/50); //returns 0.2 
 
typeof div //number 
 
console.log(div * 100);

0

小解決方法:

function log(...values){ 
    console.log(...values); 
    return values.length === 1 ? values[0] : values; 
} 

所以,你可以這樣做:

var a = log(5/10)*2; 
log(a); 
log(log(1,2)[0]+3) 

另外,這樣做反過來:

var a; 

console.log(
    a = 10/50, 
    10*a, 
    11*a 
);