闭包:为什么没有内联对象?

问题描述

闭包编译器一直存在问题-有时它将内联结构的内容,有时则不会。例如:

(function(){
  const C = {SOMETHING: 0x76,BLA: 123}

  function Test(write) {
    write(5+C.BLA);
  }

  exports.hello = function() {
    return Test;
  };
})()

不内联:

(function(){function a(b){b(5+c.BLA)}var c={SOMETHING:118,BLA:123};exports.hello=function(){return a}})();

但是只需更改Test的导出方式:

(function(){
  const C = {SOMETHING: 0x76,BLA: 123}

  function Test(write) {
    write(5+C.BLA);
  }

  exports.hello = Test;
})()

会使其内联罚款:

(function(){exports.hello=function(a){a(128)}})();

我在这里使用SIMPLE_OPTIMISATIONS,但ADVANCED_OPTIMISATIONS并没有改善问题,也没有键入注释:

(function(){
  /** @enum {number} */
  const C = {/** @const */SOMETHING: 0x76,/** @const */BLA: 123}

  function Test(write) {
    write(5+C.BLA);
  }

  exports.hello = function() {
    return Test;
  };
})()

有人知道为什么它不会内联吗?有没有一种方法可以获取报告或从编译器中查找?

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)