0

Почему false, а не true? Ведь приведение типов должно было сработать при ==

console.log(!!'строка со значением')
console.log('строка со значением' == true)
  • Потому что тут строка не преобразуется в булево, а ноборот: булева приводится к строке?)) – Алексей Шиманский Nov 18 '21 at 15:04
  • https://developer.mozilla.org/ru/docs/Web/JavaScript/Equality_comparisons_and_sameness Тут написано, что идёт преобразование к ToNumber(A) === ToNumber(B) – xmikex Nov 18 '21 at 15:06
  • Очень странно, сколько изучал, в итоге так и не понял. Пустая строка является ложные значением. Строка со значением считается истинным. == означает что сравнение происходит с приведением типов. Соответственно строка приведенное в тип = true , true == true должно быть тоже true( – Иван Nov 18 '21 at 15:08
  • И почему булево к строке, а не наоборот? Как это понять? – Иван Nov 18 '21 at 15:09
  • @xmikex мммм. значит получается итоговое сравнение получается NaN == 1. Думаю можно написать это для автора) – Алексей Шиманский Nov 18 '21 at 15:18
  • Иван, так сделай явное приведение строки к типу bool и после этого делай сравнение. Неявно оба значения приводятся к числовому представлению, а не к булеву. – xmikex Nov 18 '21 at 16:43

1 Answers1

-2

Быть может потому что

console.log('строка со значением' === undefined)
  • Tatarincev не совсем понял( – Иван Nov 18 '21 at 15:02
  • если вам надо проверять объявлена ли переменная, необходимо использовать оператор строгого соответствия (без приведения типов) – Sergey Tatarintsev Nov 18 '21 at 15:04