2017-08-14 103 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 
); 
相关问题