JS-作用域划分
来源:互联网 发布:et排版软件 编辑:程序博客网 时间:2024/06/15 19:27
和其他语言不通的是,js的作用域是按函数来划分的;不像C 语言,java等高级语言,有严格的块级作用域的区分,在java中for或者if都算是一个独立的块级作用域,但是在JavaScript中if、for 语句中的花括号不是独立的作用域。JavaScript 的作用域完全是由函数来决定的。比如
if (true) { var name = 'zhangsan';}console.log(name); // 输出 zhangsan
上面的代码在c语言和java中会出现变量未定义的错误,因为在Java中if(true){...}是独立的作用域,在if里面定义的变量,在if外面是访问不到的;但是在js中if不算独立的作用域,所以在if外面照样可以访问到局部变量name.在比如下面代码:
function test(){for(var i=1;i<5;i++){alert(i);}alert("外部调用 i 的值是:" + i); // 外部调用 i 的值是 5}
同样在for循环外面照样可以访问到局部变量i,那么在js中也想实现java中的效果:“想让for循环结束之后变量i就无法在for循环外访问了。可以实现吗???
答案是:当然可以!!
怎么实现那??需要通过JavaScript中的自执行函数表达式,在这里如果不明白函数表达式 和 自执行 是怎么回事的小伙伴请参考我的另一篇文章《js函数声明和函数表达式》
(function(){ for(var i=1;i<5;i++){ alert(i); }})();
这就是一个自执行的函数表达式
function test(){ (function(){ for(var i=1;i<5;i++){ alert(i); } })(); alert("外部调用 i 的值是:" + i);//这是再访问i,就访问不到了 } test();
这里再for循环的外面在访问i就报i未定义的错误了
由此可知:在js中如果 想让一段代码中的局部变量,在这段代码之外不被访问到,就可以通过自执行函数表达式来实现;这样往往能够避免和外部代码发生冲突。
换句话说可以通过 js中的自执行函数表达式 来实现java等高级语言中的块级作用域。
0 0
- JS-作用域划分
- 作用域根据函数划分
- 子网划分的作用
- js数据类型+js作用域
- JS 无块级作用域
- js 变量作用域
- js作用域链
- js cookie 作用域
- js作用域学习
- js变量作用域
- js作用域,内部
- JS作用域链
- js作用域
- JS作用域链
- js作用域
- JS函数作用域
- js 延长作用域
- JS作用域
- 设计模式初体验---策略模式Strategy
- 欢迎使用CSDN-markdown编辑器
- SQL建立相同的表导数据
- Android中使用Notification.Builder发送通知
- 批处理命令 - for
- JS-作用域划分
- 配置NFS服务器启动mini2440
- virtualBox更换系统虚拟硬盘
- springmvc后台接受多个参数
- jQuery.Autocomplete插件的使用
- Delphi中WebBrowser的使用技巧汇总大全
- ios xocde 部分文件支持ARC
- 各种距离(分类)
- oralce 修改sga和pga