Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 15.07.2017
Сообщений: 12

Числовая переменная конкатинирует вместо суммы

11.10.2018, 19:41. Показов 1683. Ответов 16

Студворк — интернет-сервис помощи студентам
Пытаюь прибавить число 40, которое в переменной cellSize к snake[0][0] но вместо 240, пулучаю 20040
JavaScript
1
2
3
4
5
6
let cellSize = 40
let snake = [[200,200]]
 
console.log(snake[0][0]) // вывод 200
console.log(snake[0][0] += cellSize) // вывод 20040
console.log('snake start at ' + snake)
если прибавлять число вместо cellSize, то все в проядке
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.10.2018, 19:41
Ответы с готовыми решениями:

Почему числовая переменная приняла string?
using System; class NameRazny { static void Main() { int n; n=CHISLO();

Некорректно записывается массив и числовая переменная, останавливается из-за corrupted stack
Доброго времени суток! Создал в программе структуру со следующими полями: фамилией, именем; номером телефона; датой рождения (массивом из...

Хвостик массива в программе шалит, числовая переменная сбоит, а у меня бомбит
Доброго времени суток! Создал в программе структуру со следующими полями: фамилией, именем; номером телефона; датой рождения (массивом из...

16
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
11.10.2018, 20:27
Anton58745,
Да вроде все норм, смотрите сами: https://codepen.io/Mr_Sergo/pen/ePREqG
Ищите проблему в другом.
0
1 / 1 / 0
Регистрация: 18.06.2018
Сообщений: 91
12.10.2018, 16:58
Когда у меня бывают такие затруднения всегда пользуюсь такой штукой, хоть возможно это и лучшая практика

JavaScript
1
console.log(snake[0][0] += Number(cellSize))
Тем не менее, у меня Ваш код работает отлично
0
0 / 0 / 0
Регистрация: 15.07.2017
Сообщений: 12
12.10.2018, 19:12  [ТС]
оказывается, это потому-что я кладу в переменную число из input
JavaScript
1
document.getElementById('input-cell-size').value
и только при присваивании, оно срабатывает как string
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
12.10.2018, 19:16
Цитата Сообщение от Anton58745 Посмотреть сообщение
и только при присваивании, оно срабатывает как string
свойство value у элементов формы всегда возвращает строку.
https://developer.mozilla.org/... putElement
1
0 / 0 / 0
Регистрация: 15.07.2017
Сообщений: 12
12.10.2018, 19:23  [ТС]
получается мне нужно прописать parseInt() перед value, или есть другой способ, положить туда int
JavaScript
1
const cellSize = parseInt(document.getElementById('input-cell-size').value)
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
12.10.2018, 19:32
Лучший ответ Сообщение было отмечено Anton58745 как решение

Решение

Anton58745,
Цитата Сообщение от Anton58745 Посмотреть сообщение
parseInt() перед value
прописать value в parseInt. Да все верно.
Цитата Сообщение от Anton58745 Посмотреть сообщение
есть другой способ
JavaScript
1
+(document.getElementById('input-cell-size').value)
JavaScript
1
Number(document.getElementById('input-cell-size').value)
JavaScript
1
parseFloat(document.getElementById('input-cell-size').value)
JavaScript
1
Math.round(document.getElementById('input-cell-size').value)
JavaScript
1
Math.floor(document.getElementById('input-cell-size').value)
JavaScript
1
(document.getElementById('input-cell-size').value) * 1
1
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
12.10.2018, 19:59
Anton58745, рекомендую поизучать тему типов в JavaScript. Традиционно они тут прячутся от новичков. Но нужно понимать, что все значения имеют свой тип.
Прикольная функция:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
/**
 * Имя типа у аргумента. Обычно с прописной буквы, кроме undefined и null.
 * Для примитивных типов подставляется имя типа-обертки.
 * @param {*} arg Произвольное значение объекта или примитивного типа, для которого нужно определить имя типа.
 */
function getType(arg) {
    let proto, constr;
    return (arg === undefined) ? "undefined" :
        (arg === null) ? "null" :
            (!(proto = Object.getPrototypeOf(arg)) || !(constr = proto.constructor)) ? "Object" : constr.name;
}
Также нужно изучить отличия == от ===
И операторы typeof и instanceof.
Тогда попроще будет ориентироваться в JavaScript.
0
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
12.10.2018, 21:56
Anton58745,
Дам маленький совет. В консоли, по крайней мере в гугл хроме, всегда можно понять по цвету переменная является числом или строкой. "Фиолетовое значение"- значит число. "Белое значение"- значит строка:

Только что бы понять по цвету строка это или число нельзя числовую переменную конкатенировать со строкой, потому что в любом случае на выходе, по цвету, она будет выглядеть как строка, при канкатенации числа со строкой оно так и есть:

Лично мне, это бывает помогает
0
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
12.10.2018, 23:08
И вот небольшая проверка на число:
JavaScript
1
2
3
4
5
6
7
8
let number = '45';
 
if(number === +number){
    console.log('Переменная является числом');
}
if(number !== +number){
    console.log('Переменная НЕ ЯВЛЯЕТСЯ числом');
}
Или то же самое, но через условного оператора:
JavaScript
1
2
let number = '45';
number === +number ? console.log('Переменная является числом') : console.log('Переменная НЕ ЯВЛЯЕТСЯ числом');
0
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
13.10.2018, 01:54
Цитата Сообщение от Mr_Sergo Посмотреть сообщение
if(number !== +number)
else, не?
0
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
13.10.2018, 01:57
Цитата Сообщение от klopp Посмотреть сообщение
else, не?
Вы уже не первый кто акцентировал на этом внимание
Отвечаю: Да.
Два раза if для того что бы тс-у было понятней- я не знаю насколько глубоки его познания в js
0
13.10.2018, 02:01

Не по теме:

Цитата Сообщение от Mr_Sergo Посмотреть сообщение
что бы тс-у было понятней
думаю, раз ТС использует понятие "конкатинирует" , то про else ему уже известно )))

0
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
13.10.2018, 02:34

Не по теме:

klopp, ok
я думаю иначе



Добавлено через 22 минуты

Не по теме:

Цитата Сообщение от klopp Посмотреть сообщение
думаю, раз ТС использует понятие "конкатинирует" , то про else ему уже известно )))
Раз вы так думаете для чего или кому тогда вы написали это?:
Цитата Сообщение от klopp Посмотреть сообщение
else, не?
Тс вроде как знает, по-вашему мнению... или может, вы думаете что я не знаю?- дак я тоже, вроде, писал про конкатенацию, не?

0
13.10.2018, 04:24

Не по теме:

Mr_Sergo, зачем так заводиться-то? Я подумал что просто по невнимательности

0
13.10.2018, 04:52

Не по теме:

Цитата Сообщение от klopp Посмотреть сообщение
Я подумал что просто по невнимательности
Тогда пардон

0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
13.10.2018, 11:00
JavaScript
1
2
3
4
        let number = '45';
        Number.isFinite(number) ? console.log('Переменная является числом') : console.log('Переменная НЕ ЯВЛЯЕТСЯ числом');
        Number.isInteger(number) ? console.log('Переменная является целым числом') : console.log('Переменная НЕ ЯВЛЯЕТСЯ целым числом');
        !isNaN(number) ? console.log('Переменная является числом или можно преобразовать в число') : console.log('Переменную НЕЛЬЗЯ преобразовать в число');
Code
1
2
3
Переменная НЕ ЯВЛЯЕТСЯ числом
Переменная НЕ ЯВЛЯЕТСЯ целым числом
Переменная является числом или можно преобразовать в число
Самые короткие способы преобразовать в целое число из вещественного числа или совместимой строки:
JavaScript
1
2
3
let number1 = ~~'45';
let number2 = '45' >> 0;
let number3 = '45' | 0;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.10.2018, 11:00
Помогаю со студенческими работами здесь

Структурированная переменная вместо скаляра
Добрый день спецы. Ранее в теме я обратился с проблемой некорректного отображения матриц, которая до сих пор не решена. Там же, пост,...

ShellExecute переменная string вместо ссылки
ShellExecute (Form1.Handle, nil, LINK , nil, nil, SW_RESTORE); Собственно, мне нужно с помощью get, спарсить в LInk : string, ссылку...

Переменная вместо имени таблицы в конструкторе запросов
Здравствуйте! Подскажите пожалуйста, возможно ли в конструкторе запросов использовать переменную для указания имени таблицы и поля? ...

Вместо переменных окружения -> переменная из командной строки
Короче ребята такое дело, надо переделать так что бы вместо переменных окружения надо что бы вместо переменных окружения программа...

Переменная czBankNumber не инициализируется? вместо значений квадратики 2 шт и все
Инициализация находится в функции-члене void setBunkNumber(); #include <iostream> #include <cstdlib> class cAccount{ public: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru