Почему 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:

  • Оператор typeof возвращает строку; (typeof 1) оценивает строку 'number'.

  • 'number'===1 по очевидным причинам оценивается false.

Смотрите 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));