false == 'false' // false

== is commonly regraded as 'value equality', where it is mostly true (considering references to objects\functions as values), it is a gotcha\wtf item on boolean values.
This is because == actually does numeric value comparison, causeing the expression:
false == 'false' to be evaluated to 0 (false) == 1 (the string 'false')