如何将javascript函数锁定到本地范围?我想阻止它使用全局变量

Joã*_*imo 3 javascript scope global function global-variables

有没有一种方法,以防止功能使用全局变量,如document,window,navigator,和其他声明的全局函数?

编辑1:如果我可以选择受限制的全局对象,那将是很好的,因为我想允许该函数用作示例Math对象及其函数...

小智 5

有没有办法阻止函数使用全局变量,如文档,窗口,导航器和其他声明的全局函数?

不,除非......

这项任务唯一可行的方法是,如果可以改变函数的词法范围 - 也就是说,以某种方式修改源代码,例如如下所示包装它.

想像:

;(function () {
    var window = "Hello"

    // original content
    function foo () {
        alert(window)
    }
    foo()

})()
Run Code Online (Sandbox Code Playgroud)

这种方法经常在库中用于创建私有命名空间,但在这些情况下,原始源也是可用的,并且考虑到这一点而设计.我之前用过这个document改变 jQuery的本地版本.

虽然with最初可能看起来很有希望,但重要的是要意识到它只是一个词法结构,并没有引入动态变量.

快乐的编码.