这里讲述js变量及其作用域及如何根据名字获取全局变量。
Javascript和Java、C这些语言不同,它是一种无类型、弱检测的语言。它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量。
js变量作用域可分为:"全局变量"和"局部变量"。
"全局变量":申明在函数之外的变量
"局部变量":申明在函数体中的变量,并且只能在当前函数体内访问,如:
function(){var a = 0;}
注:在声明变量时凡是没有var关键字,而直接赋值的变量均为全局变量。
下面通过几道小例子熟悉下:
1、function test() {
a = 30;
var b = 20;
}
test();
console.log("a="+a); //这里很明显,a为全局变量
console.log("b="+b); //b为局部变量,故在函数test外调用是,提示未定义
2、 var a = 1;
function test() {
console.log("a="+a); //这里a为undefined
var a = 2;
/*函数中声明的变量在整个函数中都有定义。如果函数内部有定义变量,即使在定义之前输出但会先执行后面定义语句,然后判断输出结果,所以说声明的变量在整个函数中都是起作用的。*/
}
test();
3、给两个小例子作为对比:
var a; function fun() { a = "global"; } console.log(a);//输出undefined
var a; function fun() { a = "global"; }
fun();console.log(a);//输出 global
对于上面这两个小例子,它们唯一的区别就是一个执行了fun函数,一个没有执行;
如果就是
var a;console.log(a);//由于a只定义,但没初始化,故输出undefined
而function fun(){...}中对a进行初始化,初始化操作是在fun函数作用域内,如果不执行fun()那么初始化操作也不会执行。|#|#|
4、函数域优先于全局域,故局部变量a会覆盖掉全局变量a
var a=1;
function main(){
var a=2;//局部变量
console.log(a);//2
}
main();
console.log(a);//1
5、javascript没有块级作用域
function test(){
for(var i = 0 ; i < 3 ; i++){
//i=0,1,2,最后执行到i=3时退出循环
}
console.log(i);//3
}
test();
相当于
function test(){
var i;
for(i = 0; i < 3; i++){
//i=0,1,2,最后执行到i=3时退出循环
}
console.log(i);//3
}
test();
var obj=window[“name”];
欢迎阅读、分享,转载和使用请注明出处,文章来自三里河之光-风、物、情
社区 |
动态 |
诗文作 |
风 |
物 |
情 |
志 |
景色欣赏 |
链接更多 |
友情链接
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
==区域链接== |
国家工商总局 |
财政部 |
国家发改委 |
统计局 |
建设部 |
中国地质调查 |
中国科学院 |
资助账号: | 621226020008 9191221 |
资助说明 | 进入 |
中华人民共和国 |