Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:是否可以访问私有变量(即隐藏在闭包中的变量)?_Javascript_Closures - Fatal编程技术网

JavaScript:是否可以访问私有变量(即隐藏在闭包中的变量)?

JavaScript:是否可以访问私有变量(即隐藏在闭包中的变量)?,javascript,closures,Javascript,Closures,我在JavaScript中实现了一个对象作为闭包,有些方法是公共的,有些是私有的: var MyObject = (function(){ function _hiddenMethod() { /* Do something fancy here, such as reading data from an external source and storing it in _hiddenVariable2 */ }

我在JavaScript中实现了一个对象作为闭包,有些方法是公共的,有些是私有的:

var MyObject = (function(){

    function _hiddenMethod() {
        /* Do something fancy here, such as reading data 
        from an external source and storing it in 
        _hiddenVariable2 */
    } 

    var _hiddenVariable1 = 3;
    var _hiddenVariable2 = undefined;

    return {
        publicMethod: function() {
            _hiddenMethod();
            return _hiddenVariable1;
        };
    };

})();

(熟练的)用户是否有办法读取
\u hiddenVariable2
的内容?我假设它通过阅读JavaScript代码知道它的存在。

将其声明为
\u hiddenVariable2=undefined而不是
var\u hiddenVariable2=未定义

它将可用于代码中的任何其他模块

据我所知,这可能取决于javascript引擎

还请记住,任何人都可以调试javascript并在闭包中设置_hiddenVariable2时进行记录(在_hiddenMethod中编写类似于_hiddenVariable2=5的内容,尝试chrome的开发工具并在_hiddenMethod中插入断点,您将能够看到何时设置了_hiddenVariable2)


因此,一个熟练的用户可以知道它的当前值,如果他在V8中调试代码的话。

哇,你没有用过全局这个词,但它就是
window.\u hiddenVariable2
global variable!这根本不能解决问题是的!你是对的。如果您不使用var,它将成为一个全局变量谢谢您的洞察力!它没有回答问题,但我也不知道。