29.11.2021, 05:27
|
Кандидат Javascript-наук
|
|
Регистрация: 18.09.2014
Сообщений: 128
|
|
А это вообще как?!
Извините за неинформативное название темы, но я реально ничего не понимаю.
function m(d, n, c1){
return Math.floor(n * с1 - 0.1 * d);
}
function s(d, n, c1, t){
let m1 = m(d, n, c1);
return -20000*m1 + m1*t;
}
alert(s(1, 0, 0, 4));
Результат выполнения (точнее НЕвыполнения) этого кода: ошибка VM1695:2 Uncaught ReferenceError: с1 is not defined
at m (<anonymous>:2:25)
at s (<anonymous>:5:12)
at <anonymous>:1:7
(браузер Edge).
Цэ шо вообще деется?
|
|
29.11.2021, 05:29
|
Кандидат Javascript-наук
|
|
Регистрация: 18.09.2014
Сообщений: 128
|
|
Как это часто бывает, решение нашлось через секунду после опубликования поста
Дело в названии переменной. Видимо переменная c1 уже где-то используется (может быть в jquery, может быть ещё где). Если переименовать её, баг исчезает.
Правда, это всё равно очень странно. Даже если изменить переменную c1 на arg_c, баг всё равно остаётся. А если на preved - исчезает Мистика.
Последний раз редактировалось jaroslav.tavgen, 29.11.2021 в 05:36.
|
|
29.11.2021, 06:09
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,589
|
|
Ставлю палку колбасы что у тебя была в одном месте русская с. И когда периименовывал переменную ты её не удалял а дописывал.)
__________________
29375, 35
|
|
29.11.2021, 08:48
|
|
Профессор
|
|
Регистрация: 19.01.2012
Сообщений: 505
|
|
Код:
|
$ echo 'function m(d, n, c1){
return Math.floor(n * с1 - 0.1 * d);' |iconv -fcp1251 -tutf8
function m(d, n, c1){
return Math.floor(n * СЃ1 - 0.1 * d); |
И палка уходит к Aetae %)
|
|
29.11.2021, 17:20
|
Кандидат Javascript-наук
|
|
Регистрация: 18.09.2014
Сообщений: 128
|
|
Сообщение от Aetae
|
Ставлю палку колбасы что у тебя была в одном месте русская с. И когда периименовывал переменную ты её не удалял а дописывал.)
|
Похоже на то! И чего Джаваскрипт нормальные сообщения об ошибках не сделает? "Нот дефайнд", блин. Если он кириллицу без кавычек не читает, почему так и не сказать?
|
|
29.11.2021, 17:24
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,589
|
|
jaroslav.tavgen, в том то и дело что читает. У тебя задана переменная английская, а использована переменная русская. Это две разных переменных. Потому и та что использована - "Нот дефайнд".
WebStorm подсвечивает если используется разные языки, для eslint вроде тоже есть правило, чтоб находил такие опечатки.
Ну и если ты будешь использовать нормальные, говорящие, имена переменных, вместо однобуквеного мусора, то шансы на такое нарваться заметно снижаются.
__________________
29375, 35
Последний раз редактировалось Aetae, 29.11.2021 в 17:28.
|
|
29.11.2021, 17:30
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Сообщение от jaroslav.tavgen
|
Если он кириллицу без кавычек не читает, почему так и не сказать?
|
А что он должен говорить
let это = 1, такие=2, переменные=3;
console.log(это + такие + переменные)
|
|
29.11.2021, 18:15
|
Кандидат Javascript-наук
|
|
Регистрация: 18.09.2014
Сообщений: 128
|
|
Сообщение от Aetae
|
Ставлю палку колбасы что у тебя была в одном месте русская с. И когда периименовывал переменную ты её не удалял а дописывал.)
|
Сообщение от Aetae
|
jaroslav.tavgen, в том то и дело что читает. У тебя задана переменная английская, а использована переменная русская. Это две разных переменных. Потому и та что использована - "Нот дефайнд".
WebStorm подсвечивает если используется разные языки, для eslint вроде тоже есть правило, чтоб находил такие опечатки.
Ну и если ты будешь использовать нормальные, говорящие, имена переменных, вместо однобуквеного мусора, то шансы на такое нарваться заметно снижаются.
|
Понял, да! Здесь не придраться, конечно. Прикольный казус.
|
|
|
|