Почему 'пустой указатель> = 0 && пустых указателей <= 0', но не 'пустой указатель == 0'?

Я должен был записать стандартную программу, которая увеличивает значение переменной 1, если ее тип number и присваивает 0 переменной в противном случае, где переменная первоначально null или undefined.

Первая реализация была v >= 0 ? v += 1 : v = 0 потому что я думал что-либо не, число сделает ложь арифметического выражения, но это было неправильно с тех пор null >= 0 оценен к истинному. Затем я учился null ведет себя как 0, и следующие выражения все оценены к истинному.

  • null >= 0 && null <= 0
  • !(null < 0 || null > 0)
  • null + 1 === 1
  • 1 / null === Infinity
  • Math.pow(42, null) === 1

Конечно, null не 0. null == 0 оценен ко лжи. Это делает на вид тавтологическое выражение (v >= 0 && v <= 0) === (v == 0) ложь.

Почему null как 0, хотя это не на самом деле 0?

134
задан C. Lee 21 August 2012 в 07:10
поделиться