gpt4 book ai didi

javascript - ClosureCompiler 通过高级优化删除死代码

转载 作者:行者123 更新时间:2023-11-30 18:02:38 25 4
gpt4 key购买 nike

以下代码:

(function() {
var hello = function(name) {
alert('Hello, ' + name);
}
hello('New user');
})();

使用 ADVANCED_OPTIMIZATIONS 编译为:

alert("Hello, New user");

但是这段代码:

(function() {
var hello = function(name) {
alert('Hello, ' + name);
}
hello.a = 5;
hello('New user');
})();

编译为:

function a(b){alert("Hello, "+b)}a.a=5;a("New user");

为什么它不能忽略 hello.a = 5

(不能在上下文之外使用,没有eval,没有[],也没有new Function()。)

最佳答案

为此,编译器需要确定没有人用查看调用函数的函数替换“alert”:

alert = function() {
console.log(arguments.callee.caller.a);
}

但是“alert”是一个外部函数,所以没有办法确定它到底做了什么。通常,javascript 是如此可变,以至于可以安全地从函数中删除属性的情况非常罕见,不值得努力寻找它们。

通常,Closure Compiler 可以删除它作弊的属性。这里有一些讨论:

https://github.com/google/closure-compiler/wiki/Understanding-Property-Removal

关于javascript - ClosureCompiler 通过高级优化删除死代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16546577/

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