JS Vars - Добавление - PullRequest
       30

JS Vars - Добавление

0 голосов
/ 27 октября 2009

У меня есть две переменные, 'a' и 'b' в моем JavaScript, и я хочу добавить их вместе - я предполагаю, что этот код:

var a = 10;
var b = 30
var varible = a + b;

Это ставит два числа рядом друг с другом ... любые идеи, почему ... результат должен быть 40?

Ответы [ 6 ]

4 голосов
/ 27 октября 2009

Возможно, у вас есть строки вместо целых чисел. Вот твой код действительно такой:

var a = "10";
var b = "30";
var c = a + b; // "1030"

Существует несколько способов для преобразования строк в целые числа:

a = parseInt(a, 10);  // Parse the string
b = b * 1;            // Force interpretation as number
2 голосов
/ 27 октября 2009

new - зарезервированное слово, в любом случае я бы использовал что-то другое.

И с нормальным именем переменной c у меня это сработало:

var a = 10;
var b = 30
var c = a + b;
alert(c);

сделал ожидаемое и предупреждено 40

1 голос
/ 27 октября 2009

Я действительно удивлен, что до сих пор никто не предлагал очевидного: «Приведение» с помощью JavaScript (я установил его в кавычки, потому что это не настоящее приведение).

var a = "1"; // string
var b = Number(a); // number
var c = String (b); // string again

a + b; // "11"
b + a; // 2
a + c; // "11"

Теперь, почему это не настоящий кастинг? Потому что вы создаете не новую переменную типа «число», а новый объект «Число» и инициализируете ее чем-то, что может быть числовым.

1 голос
/ 27 октября 2009

Вы уверены, что не сделали этого:

var a = '30';
var b = '40';

Здесь я показываю '30' в виде строки, а не числа, и я ожидаю, что оператор "+" объединит две строки. Поскольку это придуманный код, вы не можете быть полностью уверены, где изначально были назначены ваши переменные или какой у них тип. Вы можете проверить это так:

var a = '30';
var b = '40';
alert( typeof(a) + '\n' + typeof(b) );

Если кто-то из них говорит «объект» или «строка», а не «число», это ваша проблема. Один из способов, который может случиться, чего вы не ожидали, - это ввести данные. Скажем, у вас есть такой код:

<input id="a" value="30" />
<input id="b" value="40" />
<script language="javascript">
    var a = document.getElementById('a').value;
    var b = document.getElementById('b').value;
</script>

Здесь значение текстового ввода всегда изначально является строкой.

Если вы хотите сначала преобразовать переменную в число, вы должны использовать что-то вроде myVar - 0 до принудительно числовую операцию или более формальные функции parseInt() или parseFloat() забудьте параметр радиуса для parseInt()). И всегда проверяйте isNaN() на результатах.

1 голос
/ 27 октября 2009

new - это ключевое слово в JavaScript. Вы не должны использовать его для объявления ваших переменных или функций. изменить имя переменной с нового на другое

0 голосов
/ 27 октября 2009

Одна или обе строки. Если вы получаете значения из ввода HTML или чего-то еще, они определенно есть. Убедитесь, что они оба целые, используя parseInt:

var newValue = parseInt(a,10) + parseInt(b,10);

Также «новое» - это ключевое слово. Вы не можете использовать это для имени переменной:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...