请看以下有关ArcGIS 3.0 for JavaScript的代码片段:https://serverapi.arcgisonline.com/jsapi/arcgis/?v=3.0。其中包含了“if(0)”和“if(1)”语句,这是为什么呢?难道不是if(0)永远为假,if(1)永远为真吗?需要注意的是,这两个语句只是用来举例说明条件语句的使用方法,并不会对程序产生实际影响。
查看当前的"Dojo Build System"文档和http://jamesthom.as/blog/2012/08/03/finding-nano/以获取更多信息。此外,这个过程的低/代码级别的良好描述在此处。
P.S. "if(0)/if(1)"并不真正意味着混淆...相反,有人想要混淆,他们更可能有"if(a)...if(b)...if(c)..."变量远离设置。然而,缩小器会产生比那更混淆的代码。在运行Closure之前和之后检查dojo.js源代码; 最终产品与原始代码几乎没有任何相似之处。
是的,0
代表假,1
代表真。
然而,正如您在代码中看到的,该公司认为这是他们的商业秘密:
COPYRIGHT 2009 ESRI
TRADE SECRETS: ESRI PROPRIETARY AND CONFIDENTIAL
Unpublished material - all rights reserved under the
Copyright Laws of the United States and applicable international
laws, treaties, and conventions.
if(1)
和if(0)
。if
语句被用来代替尚未实现的真正逻辑,如@mvbl fst所提到的。if(1)
语句出现在Dojo网站上完全开放的代码中,他们为什么要混淆呢?我的意思是说,在版权声明之后的所有代码中都没有任何if(1)
语句;这都是Dojo代码的一部分。 - Ian Hunter如果尚未实现实际逻辑,则可以使用此语句替代真正的if()语句。正如@houbysoft所提到的,它们被解释为布尔值false和true。因此,暂时使用false或true来确保内部语句始终执行(或不执行),并打算稍后添加实际检查。
if(1){...}else{...}
语句,这与您的解释是符合逻辑的。 - Ian Hunter