gpt4 book ai didi

javascript - Closure Compiler 对此不应用@const

转载 作者:行者123 更新时间:2023-11-29 10:21:54 25 4
gpt4 key购买 nike

我正在尝试让这段代码正常工作:

/** @constructor */
function Foo()
{
/** @const */
this.bar = 5;

// edit: does now work
// this.bar = 3;
}

var f = new Foo();

// should be inlined (like other constants)
alert(f.bar);

我已经尝试添加更多注释(类型、构造函数),@enum 而不是 @const(对于 this.bar), me = this 所有这些都没有任何效果。

help page对此并没有真正的帮助。

有什么方法可以让它工作吗?如果不是,为什么?

最佳答案

编译器没有任何通用的“内联属性”逻辑。您可以使用原型(prototype)函数使其在高级模式下内联:

/** @constructor */
function Foo() {}
Foo.prototype.bar = function() { return 5 };

var f = new Foo();
alert(f.bar());

将编译为:

alert(5);

如果方法“bar”只有一个定义,并且“bar”只在调用表达式中使用过,编译器就会这样做。用于此的逻辑在一般情况下是不正确的(如果调用是针对未定义“bar”的对象,则调用将抛出)。然而,它被认为“足够安全”。

关于javascript - Closure Compiler 对此不应用@const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9961847/

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