码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript变量声明那些事儿

时间:2015-06-01 18:50:24      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:javascript

声明和初始化不一样

声明
var joe; // the declaration

初始化
joe = ‘plumber’; // the initialization

声明前置

你可以在函数的任何位置通过var声明变量,它们会像是在函数顶部声明一样发挥作用,这种行为称为 hoisting(前置/置顶解析/预解析)。当你使用了一个变量,然后不久在函数中又重新声明的话,就可能产生逻辑错误。看下面这个例子:

var myname = "global";

(function() {
     alert(myname);
     var myname = "local";
     alert(myname);
})();

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

上面的代码片段执行的行为会像下面这样:

var myname = "global";

(function() {
    var myname;
    alert(myname);
    myname = "local";
    alert(myname);
})();

忘记var的副作用

由于JavaScript的两个特征,不自觉地创建出全局变量是出乎意料的容易。首先,你甚至可以不需要声明就可以使用变量;第二,JavaScript有隐含的全局概念,意味着你不声明的任何变量都会成为一个全局对象属性。看下面的代码:

function sum(x, y) {
    result = x + y;
    result;
}
sum(1, 3);
alert(result);

此段代码中函数作用域外的 result 没有声明,代码照样运作正常,alert会弹出4。如果函数变量内不使用var,会产生一个全局变量,这就是忘记var的副作用(Side Effects When Forgetting var)。因此,要想和其他脚本成为好邻居的话,尽可能少的使用全局变量是很重要的。

想让全局变量少最重要的还是始终使用var来声明变量。

JavaScript变量声明那些事儿

标签:javascript

原文地址:http://blog.csdn.net/lugyedo/article/details/43734913

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!