Когда я использую какое-либо из значений (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).