所以我有一个最奇怪的问题,我可以在我的本地环境和生产服务器之间找出(或者不知道存在)。
我的本地环境运行Windows,我的生产服务器是数字海洋ubuntu发行版。我的javascript可以与之比较:
我有这种结构(简化):
var myClass = React.createClass({
getInitialState: function(){
return { number: 1 };
},
doSomething: function(numIn){
this.setState({ number: this.state.number + numIn });
},
render: function(){
return(
<div>{this.state.number}</div>
);
}
});
让我们假设使用1
调用myClass.doSomething,因此预期的状态将是1 + 1 = 2.在我的本地环境(windows)上,它将输出您期望的内容:
<div> {this.state.number} </div> => <div>2</div>
一切都好的花花公子。在我的ubuntu发行版中它虽然有点时髦,但它会改为使用它,所以相同的输入会产生:
<div>12</div>
现在我知道我可以使用parseInt或者每次添加parseFloat(我想我应该这样做),但它会使代码混乱并且很烦人。除此之外,我不明白为什么底层操作系统与此有关,javascript肯定会在客户端浏览器中运行?
正如我写这篇文章一样,它让我觉得它可能是我对后端的回应,它最初将数字作为JSON返回。根据操作系统,这个值的解释是否会有所不同?所以在ubuntu上最初会是一个字符串,因此javascript会看到string + number = string?
答案 0 :(得分:0)
解决这个问题的方法是确保始终在javascript中使用各个原语的解析版本,因为windows和linux以不同的方式返回这些值(带或不带引号)。