Итак, у меня есть самая странная проблема, которую я не могу понять (или не знал) между моей локальной средой и производственным сервером.Разница между javascript в зависимости от базовой ОС/reactJs
В моем локальном окружении запускаются окна, а мой производственный сервер - это цифровой океанский дистрибутив 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>
);
}
});
Давайте предположим, что myClass.doSomething вызывается с 1
, поэтому ожидается, состояние будет 1 + 1 = 2. На мой местная среда (окна) будет выводить то, что вы ожидаете:
<div> {this.state.number} </div> => <div>2</div>
Все хорошие денди. На моем Ubuntu дистрибутивах это немного напуганный, хотя, это будет concatinate его вместо этого, так же вход будет выход:
<div>12</div>
Теперь я понимаю, что я могу использовать ParseInt или parseFloat вокруг каждого добавления (который я предполагаю, что я должен все равно), но он загромождает код и раздражает. В стороне, я не понимаю, почему базовая ОС имеет какое-либо отношение к этому, javascript, безусловно, работает в браузере клиентов?
Как я пишу это, мне кажется, что это может быть мой ответ от бэкэнд, который первоначально возвращает номер как JSON. Может ли интерпретация этого значения отличаться в зависимости от ОС? поэтому на ubuntu это будет строка изначально, и, следовательно, javascript увидит строку + number = string?
Где происходит '' '? Можете ли вы отследить его, скажем, файл или базу данных? Сохраняется ли она в одной и той же форме в обеих средах? – joews
Почему это происходит, я не могу сказать наверняка, но это не имеет значения. Динамическое типирование означает, что если вы хотите указать тип и убедиться, что операция выполняется так, как вам нужно, действительно важно использовать функции преобразования, такие как 'parseInt', даже если это уродливо. Тем не менее, откуда взялось 'numIn'? – CollinD
numIn исходит из базы данных, где она определена как bigInt. Состояние изначально заполнено запросом ajax, где ответ такой: {number: "1"} Edit: это была ложь, мой конвертер $ arr -> json принимает int и разбивает кавычки на нем, без меня говоря это. Я предполагаю, что это происхождение. Тем не менее, я не понимаю, как это отличается от базовых ОС? – Dennis