我有一个丑陋的JS文件,我想在其中获得美化的版本,然后再次用grunt丑陋它。我希望它和第一个被放大的文件一样。
但当我做这件事的时候,有一部分和"如果"是不一样的。
这是未经验证的文件的一部分:
...function sendRequest(requestParams){if(Object.keys(requestParams).length>=1){$.ajax({type:"POST",url:VideoSearchUrl,data:requestParams,dataType:"xml"}).done(function(xmlDoc){buildResult($(xmlDoc)),responses++,requests==responses&&postSearchActions()})}}function...
但是经过美化的文件中的丑化版本看起来是这样的:
...function sendRequest(requestParams){Object.keys(requestParams).length>=1&&$.ajax({type:"POST",url:VideoSearchUrl,data:requestParams,dataType:"xml"}).done(function(xmlDoc){buildResult($(xmlDoc)),responses++,requests==responses&&postSearchActions()})}function...
为什么"if"被丢弃?在一个网络丑化中,它仍然存在。
或者它的意思是一样的?
由于短路评估,这是正确的。
当逻辑表达式从左到右求值时,使用以下规则对其进行可能的"短路"求值测试:
- false&;(任何东西(被短路评估为假
- true||(任何东西(被短路评估为true
逻辑规则保证这些评估总是正确的请注意,上面表达式的anything部分没有求值,因此这样做的任何副作用都不会生效。此外,请注意,上面表达式的any部分是任何单个逻辑表达式(如括号所示(。
(我强调(
a = 1;
b = 1;
if (a == b) {
console.log(1);
}
// will log because it's like
// (true) && expression
a == b && console.log(2);
// will NOT log because it's like
// (false) && expression
a != b && console.log(3);
为什么要麻烦?
true&&expression
短于if(true){expression}
(每个字节计数(