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) {
|
if (compressor.option("comparisons")) switch (self.operator) {
|
||||||
case "===":
|
case "===":
|
||||||
case "!==":
|
case "!==":
|
||||||
|
var is_strict_comparison = true;
|
||||||
if ((self.left.is_string(compressor) && self.right.is_string(compressor)) ||
|
if ((self.left.is_string(compressor) && self.right.is_string(compressor)) ||
|
||||||
(self.left.is_number(compressor) && self.right.is_number(compressor)) ||
|
(self.left.is_number(compressor) && self.right.is_number(compressor)) ||
|
||||||
(self.left.is_boolean() && self.right.is_boolean()) ||
|
(self.left.is_boolean() && self.right.is_boolean()) ||
|
||||||
|
|
@ -4827,6 +4828,11 @@ merge(Compressor.prototype, {
|
||||||
&& is_object(self.left.fixed_value())) {
|
&& is_object(self.left.fixed_value())) {
|
||||||
return make_node(self.operator[0] == "=" ? AST_True : AST_False, self);
|
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;
|
break;
|
||||||
case "&&":
|
case "&&":
|
||||||
case "||":
|
case "||":
|
||||||
|
|
@ -4858,12 +4864,6 @@ merge(Compressor.prototype, {
|
||||||
}
|
}
|
||||||
break;
|
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()) {
|
if (self.operator == "+" && compressor.in_boolean_context()) {
|
||||||
var ll = self.left.evaluate(compressor);
|
var ll = self.left.evaluate(compressor);
|
||||||
var rr = self.right.evaluate(compressor);
|
var rr = self.right.evaluate(compressor);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user