gpt4 book ai didi

javascript - 让 Closure/Plovr 从 if 中删除函数,它总是 false

转载 作者:行者123 更新时间:2023-11-30 10:30:37 24 4
gpt4 key购买 nike

一个显然总是假的 if 语句,例如。 if (false),闭包删除语句。

我的代码是这样的:

if (settings.lang === "en"){
lib.doSomething();
}

settings.lang 是一个常量。

/** 
* @type {string}
* @const
*/
settings.lang = "fr" ;

因此,当它等于“fr”时,编译器可以在编译时删除 iflib.doSomething 的定义。但事实并非如此。有什么办法让它做到这一点吗?

在您问我为什么不直接删除该代码之前:对于其他客户端,settings.lang 设置为 en

最佳答案

1) 确保正确定义“设置”:

/** @const */
var settings = {};

2) 确保正确定义“设置”语言:

/** @const */ 
settings.lang = "fr" ;

3) 确保值在定义后被引用:

if (settings.lang == "en") ...

在高级模式下,如果未以防止属性折叠的方式使用设置(例如,将“设置”作为参数传递给函数将导致值转义和不可折叠),则这将被内联和删除。

如果你使用@define,这会被简化:

/** @const */
var settings = {};

/** @define {string} */
settings.lang = "fr";

如果定义的定义在某种程度上无效,您应该收到警告。

关于javascript - 让 Closure/Plovr 从 if 中删除函数,它总是 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17150962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com