javaScript中的变量分为全局变量和局部变量。
如果在一个函数中定义了一个变量,那么只能这个方法和这个方法内部的方法可以使用。即内层函数能调用外层函数的变量,但是外层函数不能直接调用内层函数的变量。
以下解释摘自网络:
像javascript这样的解释型语言,基本分为两个阶段,编译期(下面为符合大多数语言的称呼习惯,改叫预编译)与运行期。在预编译阶段,它是用函数来划分作用域,然后逐层为其以 var 声明的变量(下略称为var变量)与函数定义开辟内存空间,再然后对var变量进行特殊处理,统统赋初始值为undefined。
也就是说如果你在一个函数中定义了一个变量 var data,只要是在该方法中出现的data都属于这个局部变量,你可以在定义之前就引用它,只是这个时候还没有赋值,会使用初始值undefined。这与java中的变量是不一样的,在js中一个函数内局部变量的定义是没有顺序的限制的。