为什么:3.toString()会导致Node.JS REPLinput新的作用域?

当我input一个文字整数后跟着.toString()进入节点时,它通过用...做出响应来进入一个新的范围。

例子

 > 3.toString() ... 

 > 'foo:' + 3.toString() ... 

 > 'foo:' + 3.toString() + ':bar' ... 

其他types似乎工作正常

 > true.toString() 'true' 

即使这个作品!

 > 10.50.toString() '10.5' 

解决方法

括号中的文字整数工作:

 > (3).toString() '3' 

有没有这个原因,或者你认为这是一个错误?

这是因为当JavaScript在一个整数之后看到一个句点时,它将把它作为小数后的值。 正因为如此,只要使用5.toString()将使JavaScriptfind它所期望的数字的toString 。 如果你把它放在括号内,或者包含小数点,它就会起作用。 事实上,这个(虽然读起来还不太清楚),也会起作用:

 5..toString() 

因为一个空的小数点会使JavaScript把整数5变成一个浮点数5 ,这将阻止它假设在下一个时段之后会有数字。 这将使JavaScript在下一个时期后期待一种方法。

你也可以使用的是,JavaScript自动检测你正在使用的东西的types。 这意味着你也可以简单地使用这个:

 5+'' 

这也将工作时,放在中间串:

 console.log('We will need '+ 5+5 + 'pizzas.'); //"We will need 55 pizzas." console.log('We will need '+ (5+5) +' pizzas.'); //"We will need 10 pizzas."