JavaScript-在JavaScript中,为什么要尽可能使用局部变量

JavaScript-在JavaScript中,为什么要尽可能使用局部变量

夜无邪 发布于 2017-11-10 字数 0 浏览 1363 回复 3

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

归属感 2017-11-11 3 楼

所有语言都是如此,不限于 JS。
1 模块化
2 避免冲突
3 提高性能

瑾兮 2017-11-10 2 楼

这是因为javascript是根据域的深度来构建变量的优先级,域的深度构建了对象列表。

浮生未歇 2017-11-10 1 楼

简单来讲,局部变量的scope排在全局变量的scope前面,在函数内部搜索变量的时候,会按照scope深度排序来进行搜索。
比如:

var o = {"id":1};
function test() {
o["id"] += 3;//先搜索o,然后在o的scope中搜索id
o["id"] += 5;
o["id"] += 6;
}

修改代码:

var o = {"id":1};
function test() {
var id = o["id"];//搜索一次o["id"]
id += 3;//在局部scope中搜索id变量
id += 5;
id += 6;
o["id"] = id;
}

ECMA-262标准中描述的函数执行模型和标识符解析(Identifier Resolution)的过程:

在执行JavaScript代码的过程中,当遇到一个标识符,就会根据标识符的名称,在执行上下文(ExecutionContext)的作用域链中进行搜索。从作用域链的第一个对象(该函数的ActivationObject对象)开始,如果没有找到,就搜索作用域链中的下一个对象,如此往复,直到找到了标识符的定义。如果在搜索完作用域中的最后一个对象,也就是全局对象(GlobalObject)以后也没有找到,则会抛出一个错误,提示用户该变量未定义(undefined)。

详细讲解可以参考:http://hi.baidu.com/cityhacker/blog/item/abb2d52b6012c0fde6cd40a3.html