more efficient to check option and operator only once
This commit is contained in:
parent
26f4e5762c
commit
5e76065c9e
|
|
@ -4797,6 +4797,7 @@ merge(Compressor.prototype, {
|
|||
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()) ||
|
||||
|
|
@ -4827,6 +4828,11 @@ merge(Compressor.prototype, {
|
|||
&& is_object(self.left.fixed_value())) {
|
||||
return make_node(self.operator[0] == "=" ? AST_True : AST_False, self);
|
||||
}
|
||||
// void 0 == x => null == x
|
||||
else if (!is_strict_comparison
|
||||
&& is_undefined(self.left, compressor)) {
|
||||
self.left = make_node(AST_Null, self.left);
|
||||
}
|
||||
break;
|
||||
case "&&":
|
||||
case "||":
|
||||
|
|
@ -4858,12 +4864,6 @@ merge(Compressor.prototype, {
|
|||
}
|
||||
break;
|
||||
}
|
||||
// void 0 == x => null == x
|
||||
if (compressor.option("comparisons") &&
|
||||
(self.operator == "==" || self.operator == "!=") &&
|
||||
is_undefined(self.left, compressor)) {
|
||||
self.left = make_node(AST_Null, self.left);
|
||||
}
|
||||
if (self.operator == "+" && compressor.in_boolean_context()) {
|
||||
var ll = self.left.evaluate(compressor);
|
||||
var rr = self.right.evaluate(compressor);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user