if (compressor.option("comparisons")) switch (self.operator) {
case "===":
case "!==":
+ var is_strict_comparison = true;
if ((self.left.is_string(compressor) && self.right.is_string(compressor)) ||
(self.left.is_number(compressor) && self.right.is_number(compressor)) ||
(self.left.is_boolean() && self.right.is_boolean()) ||
// XXX: intentionally falling down to the next case
case "==":
case "!=":
+ // void 0 == x => null == x
+ if (!is_strict_comparison && is_undefined(self.left, compressor)) {
+ self.left = make_node(AST_Null, self.left);
+ }
// "undefined" == typeof x => undefined === x
- if (compressor.option("typeofs")
+ else if (compressor.option("typeofs")
&& self.left instanceof AST_String
&& self.left.value == "undefined"
&& self.right instanceof AST_UnaryPrefix