Javascript 局部函数/变量封装

Javascript 局部函数/变量封装,javascript,code-injection,Javascript,Code Injection,我看到一些使用匿名立即调用函数进行封装的代码如下所示 (function(){ var ABC = ... function XYZ(){ .... } })(); ABC或XYZ()是否完全不可访问(通过脚本注入/劫持)?在您提供的示例中,变量和函数在自调用函数作用域之外完全不可访问一旦作用域中有0个变量引用 对象本身 O是其后代属性的任何对象 一个已在上述任一项上关闭的函数 在这种情况下,上述内容均不可用:您没有对IIFE范围外的ABC内容的引

我看到一些使用匿名立即调用函数进行封装的代码如下所示

(function(){
    var ABC = ...

    function XYZ(){
        ....
    }
})();

ABC或XYZ()是否完全不可访问(通过脚本注入/劫持)?

在您提供的示例中,变量和函数在自调用函数作用域之外完全不可访问

一旦作用域中有0个变量引用

  • 对象本身
  • O是其后代属性的任何对象
  • 一个已在上述任一项上关闭的函数
在这种情况下,上述内容均不可用:您没有对IIFE范围外的
ABC
内容的引用,也没有对它所属的任何对象的引用。这意味着它现在无法访问。但是,如果要使用
XYZ
关闭
ABC
,并返回
XYZ
,现在可以通过
XYZ
访问
ABC

var outerXYZ = (function(){
    var ABC = "foo";

    function XYZ(){
        return ABC;
    }

    return XYZ;
})();

// no way to access ABC directly, but

var outerABC = outerXYZ();

脚本注入/劫持部分太模糊,无法有意义地回答。

抱歉,没有看到
XYZ
的功能。