Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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_Function_Scope_Global Variables_Global - Fatal编程技术网

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

如何将javascript函数锁定到本地范围?我想阻止它使用全局变量,javascript,function,scope,global-variables,global,Javascript,Function,Scope,Global Variables,Global,是否有方法防止函数使用全局变量,如文档、窗口、导航器,以及其他声明的全局函数 EDIT1:如果我能选择哪些全局对象是受限制的,那就太好了,因为我想让函数用一个例子,数学对象和它的函数 有没有办法防止函数使用全局变量,如文档、窗口、导航器和其他声明的全局函数 不,除非… 完成此任务的唯一方法是修改函数的词法范围——也就是说,以某种方式修改源代码,例如如下所示对其进行包装 想象一下: ;(function () { var window = "Hello" // original

是否有方法防止函数使用全局变量,如
文档
窗口
导航器
,以及其他声明的全局函数

EDIT1:如果我能选择哪些全局对象是受限制的,那就太好了,因为我想让函数用一个例子,数学对象和它的函数

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

不,除非…

完成此任务的唯一方法是修改函数的词法范围——也就是说,以某种方式修改源代码,例如如下所示对其进行包装

想象一下:

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

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

})()
这种方法通常在库中用于创建私有名称空间,但在这些情况下,原始源代码也可以使用,并在设计时考虑到这一点。我以前在
文档中使用过它来更改jQuery的本地版本

虽然使用
一开始可能看起来很有希望,但重要的是要认识到它也只是一个词汇结构,不引入动态变量


快乐的编码。

你可以要求你的用户限制自己编码。网址:

ADsafe可以安全地将来宾代码(如第三方脚本广告或小部件)放在网页上。ADsafe定义了JavaScript的一个子集,其功能强大到允许来宾代码执行有价值的交互,同时防止恶意或意外的损坏或入侵。ADsafe子集可以通过JSLint等工具进行机械验证,这样就不需要人为检查来检查来宾代码的安全性。ADsafe子集还实施了良好的编码实践,增加了来宾代码正确运行的可能性


如果勾选正确的框,将验证代码是否符合ADsafe标准,因此可以安全地在您的站点上执行。

谁在调用该函数?我已经理解了这个问题,但没有理解其中的情节!任何人都可以定义函数(通过字符串提交),我将调用
eval(fn);fn(某物)
其中fn是由陌生人定义的函数。。。我想让它安全(如果可能的话)。将它作为字符串在循环中传递,并返回整洁的部分(包含所有需要的函数)。制作模板需要一些努力,但这是可能的。