2013-06-13 32 views
0

虽然我浏览了一些JS代码,但我找到了代码。没有参数的JS函数正在工作。怎么样?

示例代码:

arg = "TEST ALERT MESSAGE"; 
MyFunction(arg); 

function MyFunction() 
{ 
alert(arg) 
} 

以上MyFunction的()被给予警告消息,但没有参数来接收传入的arugment。

但是当我改变'arg'变量(在函数中,在函数'arg'外),它不起作用。

怎么可能?

在此先感谢

+0

如果'MyFunction'没有arg'的'本地版本,它会尝试在外部范围内引用一个名为'arg'的属性。否则你会得到'未定义'。 – Marty

+0

没有任何预定义参数的函数仍然可以接受参数,它们是动态的,可以通过'arguments'伪数组访问。 – elclanrs

回答

1

JavaScript中的变量作用域不符合您的想法。 为了使该变量“私人”的尝试:

var arg = "not private"; 
function privateMSG(){ 
var arg = "private"; 
    function alerter(){ 
    alert(arg); 
} 
    alerter(); 
} 

嵌套函数和闭包MDN has a much better explanation部分

+3

其实他们这样做。但是它们的范围与它们所定义的范围是链接的。变量查找将从函数的范围开始,如果它们不能在那里解析,那么查找将沿着链进行,最终以未定义结束,如果找不到任何地方。 – Jonas

+0

谢谢你们。固定。 – raam86

+0

是javascript还是像这样的bug?我以为没有安全 – Natesan

相关问题