js中所有的变量声明var当被悬置到函数的顶部

来源:互联网 发布:丰城生活丰城网络问政 编辑:程序博客网 时间:2024/05/29 03:28
// 反例myname = "global"; // 全局变量function func() {    alert(myname); // "undefined"    var myname = "local";    alert(myname); // "local"}func();

在这个例子中,你可能会以为第一个alert弹出的是”global”,第二个弹出”loacl”。这种期许是可以理解的,因为在第一个alert 的时候,myname未声明,此时函数肯定很自然而然地看全局变量myname,但是,实际上并不是这么工作的。第一个alert会弹 出”undefined”是因为myname被当做了函数的局部变量(尽管是之后声明的),所有的变量声明当被悬置到函数的顶部了。因此,为了避免这种混 乱,最好是预先声明你想使用的全部变量。

上面的代码片段执行的行为可能就像下面这样:

var myname = "global"; // global variablefunction func() {   var myname; // 等同于 -> var myname = undefined;   alert(myname); // "undefined"   myname = "local";   alert(myname); // "local"   }func();


0 0
原创粉丝点击