JavaScript变量作用域分析
JavaScript变量 分析 作用域
2023-06-13 09:14:29 时间
/*代码1*/
varscope="global";
functioncheckScope(){
varscope="local";
functionchildCheck(){
varscope="childLocal";
document.write(scope);
}
functionchildUndefined(){
document.write(scope);
varscope;
}
functionchildOverride(){
scope="childOverride";
document.write(scope);
}
document.write(scope);//输出"local"
childCheck();//输出"childLocal"
childUndefined();//输出"undefined"
childOverride();//输出"childOverride"
document.write(scope);//输出"childOverride"
}
checkScope();//输出"localchildLocalundefinedchildOverridechildOverride"
document.write(scope);//输出"global"
全局作用域与局部作用域
全局(global)变量的作用域是全局的,在Javascript中处处有定义;而函数内部声明的变量是局部(local)变量,其作用域是局部性的,只在函数体内部有定义。对于下面的输出读者应不会感到意外。
/*代码2*/
varscope="global";
functioncheckScope(){
varscope="local";
document.write(scope);
}
checkScope();//输出"local"
document.write(scope);//输出"global"
全局变量作用域中使用变量可以不用var语句,但在声明局部变量是一定要使用var语句,否则会视为对全局变量的引用。看下面代码:
/*代码3*/
varscope="global";
functioncheckScope(){
scope="local";
document.write(scope);
}
checkScope();//输出"local"
document.write(scope);//输出"local"
没有块作用域
Javascript没有块级作用域,函数中声明的变量在整个函数中都是有定义的。对于下面的代码对于生疏的读者可能颇感意外:
/*代码4*/
varscope="global";
functioncheckScope(){
document.write(scope);//语句4.1
varscope="local";//语句4.2
document.write(scope);
}
checkScope();//输出"undefinedlocal"
由于语句4.1(varscope="local";)声明的变量在整个checkScope函数作用域内都有效,因此在语句4.2(document.write(scope);)执行的时scope引用的是局部变量,而此时局部变量scope尚未定义,所以输出”undefined”。因此一个好的编程习惯是将所有的变量声明集中起来放在函数的开头。
在了解了上述内容之后,读者再看看代码1应该不会感到困惑了。
对象的属性变量
对象的属性变量比较容易理解,看一下下面的代码读者应该不会感到疑惑。
/*代码5*/
varscope="global";
varobj=newObject();
obj.scope="object";
obj.checkScope=function(){
varscope="loacl";
document.write(scope);//输出"loacl"
document.write(this.scope);//输出"object"
document.write(window.scope);//输出"global"
}
obj.checkScope();//输出"loaclobjectglobal"
相关文章
- JavaScript小技能:变量
- JavaScript ArrayJavaScript博客 1 年前 桃李Taoli
- 详解JavaScript中的变量提升/函数提升
- 【javaScript】 3分钟弄懂变量提升
- JavaScript-匿名函数[通俗易懂]
- JavaScript实现图片预加载详解编程语言
- JavaScript学习总结(二十)——Javascript非构造函数的继承详解编程语言
- javascript eval动态变量的方法详解编程语言
- Jsprime——一款JavaScript静态安全分析工具
- 分析JavaScript中令人困惑的变量赋值
- Javascript字符串字节长度计算函数代码与效率分析(forVS正则)
- javascript权威指南学习笔记之变量作用域分享
- JavaScript中的变量声明早于赋值分析
- JavaScript中json使用自己总结
- JavaScript打印iframe内容示例代码
- JavaScript判断变量是否为undefined的两种写法区别
- 浅谈JavaScript中定义变量时有无var声明的区别