Присвоить или сравнить?
У знака равенства в JavaScript две разные задачи, в зависимости от того, сколько таких знаков вы пишете:
=присваивает: сохраняет значение справа в переменной слева.score = 10означает «теперьscoreравно 10».===сравнивает: спрашивает, равны ли два значения, и ничего не меняет.score === 10означает «scoreравно 10?»
Написать в условии = вместо === — одна из самых частых ошибок, и JavaScript об этом не предупреждает:
let age = 15;
if (age = 18) {
console.log("С 18-летием!");
}
console.log("Возраст:", age);Это выведет:
С 18-летием!
Возраст: 18Условие age = 18 ничего не спрашивает. Оно меняет age на 18, а затем if использует эту 18 как условие. Число, отличное от 0, считается истиной, поэтому блок выполняется. Это сразу две ошибки: неверное сообщение и переменная, потерявшая своё значение.
Если бы age была константой (const age = 15;), вы хотя бы получили ошибку, потому что константу нельзя изменить: TypeError: Assignment to constant variable. Это ещё одна причина использовать const для значений, которые не меняются.
В JavaScript есть и == с двумя знаками равенства. Перед сравнением он приводит оба значения к одному типу, поэтому "5" == 5 истинно, хотя одно значение — текст, а другое — число. С тремя знаками равенства "5" === 5 ложно: текст и число никогда не равны. Такие преобразования приводят к неожиданностям, поэтому всегда используйте === и !==, а не == и !=.
Задание
- 1
Запустите программу. У ученика 40 баллов, а она выводит
Максимальный балл!иБаллы: 100. Исправьте условие так, чтобы оно сравнивалоpointsс100с помощью===. Тогда программа выведет толькоБаллы: 40. - 2
Добавьте ветку
else, которая выводитТренируйтесь дальше.