Почему typeof 1 === 1 возвращает false вместо boolean
Из веб-сайт MDN, если вы посмотрите на typeof operand
Def: операнд - это выражение, представляющее объект или примитив
мы знаем, что 1===1 // returns true
это примитивный тип boolean
и
typeof true // always returns boolean
Но когда я запускаю код ниже
console.log(typeof 1===1);
Ответы
Ответ 1
typeof
оператор имеет более высокий приоритет, чем ===
, поэтому выражение typeof 1===1
интерпретируется как (typeof 1)===1
:
Смотрите MDN atricle на приоритет оператора в Javascript.
В качестве другого примера, по аналогии, typeof 1+1
приводит к строке 'number1'
.
Ответ 2
Поскольку оператор typeof
имеет более высокий приоритет, тогда ===
:
- Первая операция на самом деле
typeof 1
, которая возвращает "number"
.
- Следующая операция
"number" === 1
, которая возвращает false, поскольку очевидно a string
не является number
.
Если вы хотите, чтобы он работал, используйте круглые скобки внутри, чтобы обработать сравнение (1 === 1)
first и , затем проверить его тип.
console.log(typeof (1 === 1));
Ответ 3
Выражение оценивается как (typeof 1)===1
из-за приоритета оператора. И это не true
.
Ответ 4
Попробуйте использовать
console.log(typeof (1 === 1));