なんかもうぐちゃぐちゃしてるので、ちゃんと === 使うべきと思う
真偽値
ふつう
print( true == true ); // true print( true == false ); // false print( false == false ); // true
数値
0のとき偽、1のとき真で、それ以外はなんでも偽
print( true == 0 ); // false print( true == 1 ); // true print( true == 2 ); // false 1じゃないので print( false == 0 ); // true print( false == 1 ); // false print( false == 2 ); // false
文字列
"0"か""のとき偽、"1"のとき真で、それ以外はなんでも偽
print( true == "" ); // false print( true == "0" ); // false print( true == "1" ); // true print( false == "" ); // true print( false == "0" ); // true print( false == "1" ); // false print( true == "1.0" ); // true 小数点はセーフ print( true == "0x01" ); // true 16進もセーフ print( true == "01" ); // true 8進もギリギリセーフ print( true == "10" ); // false 10だから 1じゃない print( true == "1a" ); // false 1a は数値じゃない print( true == "0a" ); // false 0a も数値じゃない print( false == "0a" ); // false print( true == "2" ); // false print( false == "2" ); // false print( true == "a" ); // false print( false == "a" ); // false print( true == "true" ); // false print( false == "false" ); // false
配列
空のときは偽、長さが1のときは先頭の要素に従い、2個以上はなんでも偽
print( true == [] ); // false print( false == [] ); // true print( true == [1] ); // true print( true == [0] ); // false print( false == [0] ); // true print( false == [1] ); // false print( true == [0,0] ); // false print( true == [1,1] ); // false print( false == [0,0] ); // false print( false == [1,1] ); // false
常に偽
オブジェクト、null、undefined はなんか常に偽
print( true == {} ); // false print( true == null ); // false print( true == undefined ); // false print( false == {} ); // false print( false == null ); // false print( false == undefined ); // false