2014-03-30 61 views
-2

我在javascript中使用类似下面的代码。这是错的吗?我可以在循环语句中定义函数吗?

for(i=0;i<5;i++){ 

function somefunction(){ 
/*function code here*/ 
} 

somefunction();//call that function inside the loop 
}//end of for loop 

我想我写了一个代码使用这个,我搞砸了一切。

+1

第一个问题:为什么你需要在循环的**内部定义**?另外,你是否试图在循环之外访问它? – PlasmaPower

+0

我不确定,但使用匿名函数('var someFunction = function(){/ * function code here * /}')应该可以工作 – Markasoftware

+1

您可以,但是*为什么*您想要这样做?你认为“我”的价值对你来说意想不到吗? – alex

回答

3

函数和变量在JavaScript的作用域到最近功能,而不是最近的{ ... })。

所以你不能在每个循环周围定义不同的函数或变量,因为你在同一个范围内覆盖相同​​的名字。

因此,在循环内部放置这样的声明是个坏主意,无论标准或实现是否允许您这样做,因为它只会误导任何人阅读代码(很可能是您自己!)。

您可以在循环内创建一个匿名函数,但没有更多的上下文,我无法给出一个如何帮助您的例子。

+0

这是真的,但仅仅是因为浏览器已经扩展了语言(并不总是兼容的方式)。这种做法在“严格”模式下是不允许的。 – Pointy

+0

@Pointy你指的是什么?我只提到你*不能*定义两个具有相同名称的函数(不管浏览器或严格性),并且你*可以*创建一个匿名函数(不管浏览器或严格性)。 – IMSoP

+0

@Pointy我添加了一个句子,澄清我认为语法的合法性无关紧要,因为无论如何这种做法都是错误的。 – IMSoP

相关问题