您的位置:首页 > Web前端 > JavaScript

javascript作用域总结

2015-07-05 10:25 513 查看
javascript共有三种作用域 :全局作用域,局部作用域,eval作用域。

eval作用域可以这么使用eval() 、window.eval()。

javascript没有块作用域,即

var foo=1;
if(true){
var  foo=2;
for (var i = 3; i <=5; i++){
var foo=i;
console.log(foo);

}
}
console.log(foo);//输出3,4,5,5;覆盖了全局变量
var foo=10000;
var slm={
name:"slm",
age:24,
sex:"male",
showage:function(){
if(true){
var foo=100;
for (var i = 3; i <=5; i++){
var foo=i;
console.log(foo);
}
console.log(foo);

}
console.log(foo);
}()
}
slm.showage;
console.log(foo);输出3,4,5,5,5,10000;局部的值都覆盖了,全局变量没覆盖
作用域链和原型链的区别并不大,都是通过位置体系和分层体系进行变量查找。当作用域链内最近位置查到变量,查找就结束,返回第一个匹配结果。

函数定义时确定作用域,而非调用时确定。作用域链是根据函数定义时的位置确定的,而不是在调用时确定的。作用域链是在调用函数之前创建,因此可以创建闭包。可以让函数全局作用域返回一个嵌套函数,但该函数仍可以通过作用域链访问其父函数作用链。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: