簡體   English   中英

JavaScript Uglify是否不同且正確?

[英]JavaScript Uglify is different and correct?

我有一個丑化的JS文件,我想在其中獲取美化版本,然后再次用咕unt聲將其丑化。 我希望它與第一個丑化文件相同。

但是,當我這樣做時,“ if”部分是不同的。

這是丑化文件的一部分:

...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...

為什么將“如果”刪除? 在在線粉碎機中,它仍然存在。

還是一樣?

由於短路評估,這是正確的。

邏輯表達式從左到右求值時,將使用以下規則測試它們的可能的“短路”評估:

  • 錯誤&&(任何東西)被短路評估為錯誤。
  • 真實|| (任何)短路評估為真。

邏輯規則保證這些評估總是正確的。 請注意,以上表達式的任何內容均未評估 ,因此這樣做的任何副作用都不會生效。 另外,請注意,上述表達式的任何部分都是任何單個邏輯表達式(如括號所示)。

(我強調)

 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} (每個字節計數)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM