首页 > 代码库 > JavaScript基础函数体中的唯一var模式(002)
JavaScript基础函数体中的唯一var模式(002)
全局变量是不好的。所以在声名变量的时候,应该采用函数体中的唯一var模式(Single var Pattern)。这个模式有不少好处:
- 提供了一个唯一的地方来查看函数体中声名的变量
- 在使用一个变量之前总是先声名,这样未初始化的变量都会被赋值为undefine。
- 让你记得要声名变量。:-)
- 代码更简洁(因为把多个var变成了一个)
说来也简单,这个模式就是在函数体的最初,用一个var声名所有本地变量(local variable)。
function func() {var a = 1,b = 2,sum = a + b,myobject = {},i,j; // 函数体...}
下面说一个Javascript函数中本地变量声名中的一个常见问题:Hoisting。Hoisting可以理解为变量声名在函数内“提起”。为了解释这一现象,看看下面的代码:
// antipatternmyname = "global"; // global variablefunction func() { alert(myname); // "undefined" var myname = "local"; alert(myname); // "local"}func();
在函数中第一次使用的myname本来是想调用全局变量,但得到的结果却是undefined,因为Javascript允许在任何地方重复使用var声 名变量,而在函数体中间内使用var声名变量时,效果与在函数体最初声名是一样的,但声名是声名了,却还没有初始化,这才出现了undefined的情 况。所以上面的代码与下面的效果相当:
myname = "global"; // global variablefunction func() { var myname; // same as -> var myname = undefined; alert(myname); // "undefined" myname = "local"; alert(myname); // "local"}func();
JavaScript基础函数体中的唯一var模式(002)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。