变量作用域是程序中定义这个变量的区域。蛮不错的。。
来源:互联网 发布:windows线程之间通讯 编辑:程序博客网 时间:2024/05/16 15:49
变量作用域是程序中定义这个变量的区域。
先贴一段代码,如果读者对代码的输出并不感到困惑就不用往下面读了。
- var scope = "global ";
- function checkScope() {
- var scope = "local ";
- function childCheck() {
- var scope = "childLocal ";
- document.write(scope);
- }
- function childUndefined() {
- document.write(scope);
- var scope;
- }
- function childOverride() {
- scope = "childOverride ";
- document.write(scope);
- }
- document.write(scope); //输出"local"
- childCheck(); //输出"childLocal"
- childUndefined(); //输出"undefined"
- childOverride(); //输出"childOverride"
- document.write(scope); //输出"childOverride"
- }
- checkScope(); //输出"local childLocal undefinedchildOverride childOverride"
- document.write(scope); //输出"global "
/* 代码1 */var scope = "global ";function checkScope() { var scope = "local "; function childCheck() { var scope = "childLocal "; document.write(scope); } function childUndefined() { document.write(scope); var scope; } function childOverride() { scope = "childOverride "; document.write(scope); } document.write(scope); //输出"local" childCheck(); //输出"childLocal" childUndefined(); //输出"undefined" childOverride(); //输出"childOverride" document.write(scope); //输出"childOverride"}checkScope(); //输出"local childLocal undefinedchildOverride childOverride"document.write(scope); //输出"global "
- 全局作用域与局部作用域 全局(global)变量的作用域是全局的,在Javascript中处处有定义;而函数内部声明的变量是局部(local)变量,其作用域是局部性的,只在函数体内部有定义。对于下面的输出读者应不会感到意外。
- var scope = "global";
- function checkScope() {
- var scope = "local";
- document.write(scope);
- }
- checkScope(); //输出"local"
- document.write(scope); //输出"global"
/* 代码2 */var scope = "global";function checkScope() { var scope = "local"; document.write(scope);}checkScope(); //输出"local"document.write(scope); //输出"global"
全局变量作用域中使用变量可以不用var语句,但在声明局部变量是一定要使用var语句,否则会视为对全局变量的引用。看下面代码:
- var scope = "global";
- function checkScope() {
- scope = "local";
- document.write(scope);
- }
- checkScope(); //输出"local"
- document.write(scope); //输出"local"
/* 代码3 */var scope = "global";function checkScope() { scope = "local"; document.write(scope);}checkScope(); //输出"local"document.write(scope); //输出"local"
- 没有块作用域
Javascript没有块级作用域,函数中声明的变量在整个函数中都是有定义的。对于下面的代码对于生疏的读者可能颇感意外:
- var scope = "global";
- function checkScope() {
- document.write(scope); //语句4.1
- var scope = "local"; //语句4.2
- document.write(scope);
- }
- checkScope(); //输出"undefinedlocal"
/* 代码4 */var scope = "global";function checkScope() { document.write(scope); //语句4.1 var scope = "local"; //语句4.2 document.write(scope);}checkScope(); //输出"undefinedlocal"
由于语句4.1(var scope = "local";)声明的变量在整个checkScope函数作用域内都有效,因此在语句4.2(document.write(scope); )执行的时scope引用的是局部变量,而此时局部变量scope尚未定义,所以输出”undefined”。因此一个好的编程习惯是将所有的变量声明集中起来放在函数的开头。
在了解了上述内容之后,读者再看看代码1应该不会感到困惑了。 - 对象的属性变量 对象的属性变量比较容易理解,看一下下面的代码读者应该不会感到疑惑。
- var scope = "global ";
- var obj = new Object();
- obj.scope = "object ";
- obj.checkScope = function () {
- var scope = "loacl ";
- document.write(scope); //输出"loacl"
- document.write(this.scope); //输出"object"
- document.write(window.scope); //输出"global"
- }
- obj.checkScope(); //输出"loacl object global"
- 变量作用域是程序中定义这个变量的区域。蛮不错的。。
- $(function(){})中定义变量的作用域
- java 变量的定义在程序中是任意的
- flash变量的作用区域
- javascript中函数中定义变量的作用域
- 浅说MC中变量的定义方式和作用域
- C++ for语句中定义变量的作用域(备忘)
- Java for语句中定义变量的作用域(备忘)
- php变量的定义和作用域
- JAVA 定义变量的作用域
- 对于程序中变量定义的注意事项
- 下列变量中,哪些变量的生存期和作用域是不一致的?
- C++中各种类型的变量的存储区域和作用域
- 各种变量的存储区域及作用域
- 这个关于c中break的跳转位置以及声明变量的作用域的问题。
- java中局部变量和成员变量主要是他们作用域的区别
- C语言中变量的作用域、生命周期及存储区域
- JVM中各内存区域解释,以及变量的作用域解释
- 第一个成功的Hibernate实例
- 蓝星星新浪微博客户端源码开放…
- 关于MSN的某些建议(针对版本MSN2009 14.0.8117.416)
- 存储过程
- DOTA团队精神
- 变量作用域是程序中定义这个变量的区域。蛮不错的。。
- 发博了!
- 关于Android下的MP3播放器
- Oracle数据库的同步复制案例
- 7月上半月的钱眼
- asp.net动态页面如何静态页面
- 职场新人菜鸟变雄鹰的26招
- mps/mrp flow simple
- 使用VC与GCC操作SQLite数据库的最简单Demo