js作用域Scope
2016-04-10 17:45
375 查看
作用域Scope
在编程语言中,作用域控制着变量和参数的可见性及生命周期.对于程序员来说这是一项重要的服务,因为它减少了名称冲突,并且提供了自动内存管理.
var foo = function(){ var a = 3, b = 5; var bar = function(){ var b = 7, c = 11; //此时 a为3,b为7,c为11 a += b + c; //此时 a为21,b为7,c为11 } //此时,a为3,b为5,而c还没有定义 bar(); //此时 a为21,b为5 }
大多数类C语言语法的语言都拥有块级作用域.在一个代码块
{}中定义的所有变量在代码块的外部是不可见的.
定义在代码块
{}中的变量在代码执行结束后会被释放掉.
尽管javascript的代码块语法貌似支持块级作用域,但实际上javascript并不支持.
javascript确实有函数作用域.哪意味着定义在函数中的参数和变量在函数外部是不可见的,
而在函数内部任何位置定义的变量,在该函数内部任何地方都可见.
很多现代语言都推荐尽可能延迟声明变量.而用在javascript上的话却会成为糟糕的建议,因为它缺少块级作用域.
所以,最好的做法是在函数的顶部声明函数中可能用到的所有变量.
但是这种现状很快就会改变,因为ES6规范中已经出现了一个新的关键字let代替var,它可以用来声明变量,并且产生块级作用域
相关文章推荐
- Javascript验证Textarea中是否有值/javascript验证select是否为空(是否选择)
- 笔记练习:《Javascript入门经典(第5版)》page138_11.8_Practice
- JSON解析和XML解析
- Spark - 导入JSON文件 Error
- 安卓学习笔记之json
- Javascript全局变量var与不var的区别
- 简单遮罩层(比较简陋,纯js)
- get获取Json
- javascript冒泡排序小结
- Jq/Js收集
- 小技巧当从后台传入数据时不要传null最好是个空对象入json中
- js中自执行函数的作用
- JS高级程序设计学习笔记——继承
- javascript自定义alert弹窗
- Json基础及常用示例
- modelAndView传值给JSP
- JavaScript语言精粹之函数篇(三)
- JavaScript confirm 自定义风格及功能实现
- js事件
- js继承 prototype和constructor