Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.11.2021, 05:27
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 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).

Цэ шо вообще деется?
Ответить с цитированием
  #2 (permalink)  
Старый 29.11.2021, 05:29
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 128

Как это часто бывает, решение нашлось через секунду после опубликования поста

Дело в названии переменной. Видимо переменная c1 уже где-то используется (может быть в jquery, может быть ещё где). Если переименовать её, баг исчезает.

Правда, это всё равно очень странно. Даже если изменить переменную c1 на arg_c, баг всё равно остаётся. А если на preved - исчезает Мистика.

Последний раз редактировалось jaroslav.tavgen, 29.11.2021 в 05:36.
Ответить с цитированием
  #3 (permalink)  
Старый 29.11.2021, 06:09
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Ставлю палку колбасы что у тебя была в одном месте русская с. И когда периименовывал переменную ты её не удалял а дописывал.)
__________________
29375, 35
Ответить с цитированием
  #4 (permalink)  
Старый 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 %)
Ответить с цитированием
  #5 (permalink)  
Старый 29.11.2021, 17:20
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 128

Сообщение от Aetae Посмотреть сообщение
Ставлю палку колбасы что у тебя была в одном месте русская с. И когда периименовывал переменную ты её не удалял а дописывал.)
Похоже на то! И чего Джаваскрипт нормальные сообщения об ошибках не сделает? "Нот дефайнд", блин. Если он кириллицу без кавычек не читает, почему так и не сказать?
Ответить с цитированием
  #6 (permalink)  
Старый 29.11.2021, 17:24
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

jaroslav.tavgen, в том то и дело что читает. У тебя задана переменная английская, а использована переменная русская. Это две разных переменных. Потому и та что использована - "Нот дефайнд".

WebStorm подсвечивает если используется разные языки, для eslint вроде тоже есть правило, чтоб находил такие опечатки.
Ну и если ты будешь использовать нормальные, говорящие, имена переменных, вместо однобуквеного мусора, то шансы на такое нарваться заметно снижаются.
__________________
29375, 35

Последний раз редактировалось Aetae, 29.11.2021 в 17:28.
Ответить с цитированием
  #7 (permalink)  
Старый 29.11.2021, 17:30
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от jaroslav.tavgen
Если он кириллицу без кавычек не читает, почему так и не сказать?
А что он должен говорить

let это = 1, такие=2, переменные=3;
console.log(это + такие + переменные)
Ответить с цитированием
  #8 (permalink)  
Старый 29.11.2021, 18:15
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 128

Сообщение от Aetae Посмотреть сообщение
Ставлю палку колбасы что у тебя была в одном месте русская с. И когда периименовывал переменную ты её не удалял а дописывал.)
Сообщение от Aetae Посмотреть сообщение
jaroslav.tavgen, в том то и дело что читает. У тебя задана переменная английская, а использована переменная русская. Это две разных переменных. Потому и та что использована - "Нот дефайнд".

WebStorm подсвечивает если используется разные языки, для eslint вроде тоже есть правило, чтоб находил такие опечатки.
Ну и если ты будешь использовать нормальные, говорящие, имена переменных, вместо однобуквеного мусора, то шансы на такое нарваться заметно снижаются.
Понял, да! Здесь не придраться, конечно. Прикольный казус.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Угадай мелодию Audaxviator Node.JS 1 22.01.2020 14:39
Snakeskin kobezzza Ваши сайты и скрипты 769 27.08.2019 04:30
Баги Opera пишем сюда devote Оффтопик 101 08.08.2013 05:56
Лексическая структура JavaScript, раскройте тему более подробно Damir Общие вопросы Javascript 7 24.03.2013 10:07
form, onclick, function...как это все сплести воедино? Berowz Общие вопросы Javascript 0 04.03.2012 15:06