Поймать использование оператора назначения вместо оператора равенства
Развлекательные программы, то есть те, которые делают разные вещи, если определенные условия встречаются, полагаются на
Если
,еще если
иеще
заявления в JavaScript. Состояние иногда принимает форму тестирования, равен ли результату значением.Эта логика произносится (по крайней мере, на английском языке) как «если x равен y, то …», что может буквально перевести в код, используя
=
или оператор назначения. Это приводит к неожиданному контрольному потоку в вашей программе.Как показано на других постах, оператор назначения (
=
) в JavaScript присваивает значение имени переменной. И==.
и===
Операторы проверяют равенство (тройной===
тесты для строгого равенства, то есть как значение, так и тип одинаковы).Почти каждое значение самостоятельно в JavaScript оценивает true, за исключением того, что известно как «Falsy» значения: false, 0, «» (пустая строка), NAN, undefined и null.
Бывший:
let x = 7; let y = 9; let result = "to come"; if(x == y) { result = "Equal!"; } else { result = "Not equal!"; } console.log(result);
- Здесь мы получаем результат «не равных», потому что Х не строго равен Y. (7) <— не равно
Поймать без вести и закрывать скобки После вызова функции
- Когда функция или метод не принимает аргументы, вы можете забыть включить (пустые) открытие и закрытие скобок при вызове его. Часто результат вызова функции сохраняется в переменной для другого использования в вашем коде. Эта ошибка может быть обнаружена путем регистрации значений переменной (или их типов) на консоль и увидеть, что один устанавливается на ссылку на функцию, вместо ожидаемого значения возвращается функция.
- Переменные в следующем примере различны:
function getNine() { let x = 6; let y = 3; return x + y; } let varOne = getNine; let varTwo = getNine(); console.log(varOne); console.log(varTwo);
- Здесь VarOne отобразится [Функция: getnine], и vartwo будет отображаться 9
Поймать аргументы, переданные в неправильном порядке при вызове функции
- Следующая ошибка, чтобы остерегаться, когда аргументы функции поставляются в неверном порядке. Если аргументы являются разными типами, такие как функция, ожидающая массива и целое число, это, скорее всего, бросит ошибку выполнения. Если аргументы одинакового типа (например, все целые числа), то логика кода не имеет смысла. Обязательно поставляйте все необходимые аргументы в правильном порядке, чтобы избежать этих проблем.
- Бывший:
let base = 2; let exp = 3; let power = raiseToPower(exp, base); function raiseToPower(b, e) { return Math.pow(b, e); } console.log(power); console will display 9
- Функция RaiseToPower поднимает основу до показателя. К сожалению, это не вызывается должным образом. Давайте исправим код, чтобы значение мощности — ожидаемый 8.
let base = 2; let exp = 3; let power = raiseToPower(base, exp); function raiseToPower(b, e) { return Math.pow(b, e); } console.log(power); console will display 8
Утомить одним ошибками при использовании индексации
- Выкл. По одному ошибкам (иногда называемым гобом), когда вы пытаетесь нацелить определенный индекс строки или массива (для среза или доступа к сегменту) или при закреплении по индексам их.
- Индексирование JavaScript начинается с нуля, а не один, что означает, что последний индекс всегда один меньше длины элемента. Если вы попытаетесь получить доступ к индексу, равным длине, программа может выбросить «индекс из диапазона» справочной ошибки или печатать undefined.
- Вот несколько примеров от одной ошибки:
let alphabet = "abcdefghijklmnopqrstuvwxyz"; let len = alphabet.length; for (let i = 0; i <= len; i++) { console.log(alphabet[i]); } for (let j = 1; j < len; j++) { console.log(alphabet[j]); } for (let k = 0; k < len; k++) { console.log(alphabet[k]); }
Первый пример здесь петли слишком много раз, а вторая петли слишком много раз (отсутствуют первый индекс, 0). Третий пример правильный.
Еще один бывший:
function countToFive() { let firstFive = "12345"; let len = firstFive.length; for (let i = 0; i < len; i++) { console.log(firstFive[i]); } }
countToFive(); console will display 1 2 3 4 5
Оригинал: «https://dev.to/rthefounding/debugging-notes-4kf0»