在一个函数内部的任何地方,javascript允许你用var声明多个变量,并且实际上都相当于在函数 顶部的声明,这个叫做吊起。如果像这样当你使用一个变量,然后你声明它在函数内(并且赋值),可能导致逻辑错误。对于javascript而言,
只要在同一个域的变量,都被认为是声明的,即使它在被声明的变量之前使用,看下面的例子:
var myname='global';
function func() {
alert(myname); // "undefined"
var myname = "local";
alert(myname); // "local"
}
func()
上面的代码等效于:
myname = "global"; // global variable
function func() {
var myname;
myname = "local";
alert(myname); // "local"
}
func()
下面这段代码的输出结果是什么?
答案
undefined和2。
上面的代码和下面这段是等效的:
另外一种解释:代码的处理分为两个阶段,
(1)变量,函数声明,参数首先被创建,也就是解析和进入上下文的阶段。
(2)代码执行阶段,函数表达式和未声明的变量被创建。