javascript之间的差异取决于底层OS / reactJs

时间:2015-10-11 19:29:44

标签: javascript ubuntu reactjs

所以我有一个最奇怪的问题,我可以在我的本地环境和生产服务器之间找出(或者不知道存在)。

我的本​​地环境运行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?

1 个答案:

答案 0 :(得分:0)

解决这个问题的方法是确保始终在javascript中使用各个原语的解析版本,因为windows和linux以不同的方式返回这些值(带或不带引号)。