JavaScript动态代码自我执行功能

时间:2017-11-17 06:47:28

标签: javascript jquery

我有问题,但我无法解决......

其他网站上有一个功能,所以我无法对其进行修改

代码是

我想添加一个原型" aaa"获得i(5)返回值

我该怎么办?

(function () {
    function i(a) {
        return a + 1; //complex calculate...
    }

    window.Util = {
        n: i(1),
        windowUtil: i(2),
        Hub: i(3)
    };
})

eval("window.Util.aaa =  i(5) ");

但是错误

  

"未捕获的ReferenceError:我没有被定义" .....

2 个答案:

答案 0 :(得分:1)

这里有几个问题

  • function表达式已定义但未调用
  • i未在eval工作的全球范围内公开。

<强>演示

(function () {
    window.i = function i(a) {
        return a + 1; //complex calculate...
    }

    window.Util = {
        n: i(1),
        windowUtil: i(2),
        Hub: i(3)
    };
})();

console.log(eval("window.Util.aaa =  i(5) "));

答案 1 :(得分:0)

您已在自调用函数中定义了function i()。在自调用函数之外使用它。像这样:

&#13;
&#13;
function i(a) {
    return a + 1; //complex calculate...
}
(function () {
    window.util = {
        n: i(1),
        windowUtil: i(2),
        Hub: i(3)
    };
})()

alert(eval("window.util.aaa =  i(5)"))
&#13;
&#13;
&#13;