Javascript 如果我不’;我不知道函数的内容

Javascript 如果我不’;我不知道函数的内容,javascript,inheritance,Javascript,Inheritance,如果他的创建者忘记使用var关键字,我如何将我的变量与这个函数中的变量隔离 for (var i = 0; i < 4; i++) { test(); } function test() { i = 0; } for(变量i=0;i

如果他的创建者忘记使用var关键字,我如何将我的变量与这个函数中的变量隔离

for (var i = 0; i < 4; i++) 
{
    test();
}

function test() 
{
    i = 0;
}
for(变量i=0;i<4;i++)
{
test();
}
功能测试()
{
i=0;
}

将for循环放在一个单独的范围内:

在函数中

function test(){
  i = 0;
}
function trial(){
  for (var i = 0; i < 4; i++){
    test();
  }
}
trial();
功能测试(){
i=0;
}
功能试验(){
对于(变量i=0;i<4;i++){
test();
}
}
审判();

这样,只有
试用
函数中的代码和函数才能访问该级别声明的变量。

与前面使用范围界定的答案相同,但更好的方法是使用IIFE:

(function () {
    for (var i = 0; i < 4; i++) {
        test();
    }
})();
(函数(){
对于(变量i=0;i<4;i++){
test();
}
})();

称之为
myAwesomeIndex
。在严格模式下运行代码,这样在现代浏览器中创建隐式变量时就会出现错误。否则,将代码的作用域设置为新的变量作用域。让函数的创建者添加
var
关键字:-)Javascript全局/局部变量我相信您指的是IIFE。IIEF是,呃,其他的东西。@Alan。。。嗯。。。这会使它更像是一种功能失调而不是功能失调吗?