Когда я использую какое-либо из значений (null
, undefined
, false
, ''
, 0
) в выражении if
, он всегда оценивается как ошибка (false
), Кроме того, отрицание этих значений ((null
, undefined
, false
, ''
, 0
) в операторе if
всегда оценивается как тавтология (true
).
if(null){
}else{
}
if(undefined){
}else{
}
if(false){
}else{
}
if(''){
}else{
}
if(0){
}else{
}
Во всех вышеприведенных случаях оператор if
вычисляется как выполняется оператор false
и else
.
Однако, когда я сравниваю эти ошибочные значения с оператором ==
, он не возвращает true
всегда. Удивительно, но он всегда возвращает значения true
, когда я сравниваю отрицание этих значений.
если оператор double equalto (==
) проверяет/сравнивает значения, а не строго для типов, то почему:
null == false // returns false
null == 0 // returns false
null == '' // returns false
Но,
!null == !false // returns true
!null == !0 // returns true
!false == !undefined // returns true
и
null == undefined // returns true
false == 0 // returns true
Я ценю, если кто-нибудь может прояснить поведение или взаимосвязь между этими значениями (null
, undefined
, false
, ''
, 0
).