javascript的一些特性
2014-03-17 12:54
357 查看
一,作用域
1) 在javascript中的作用域并不是像c中那样以花括号为一个作用域
如:
if(true){
var val = 'laumin';
}
console.log(val);//如果在c语言中这会报错,因为val未定义,而在javascript中是完全合法的
2)函数作用域(或叫局部作用域)
在javascript中引用一个变量时先从局部变量搜索,如果没有再向上层作用域搜索,直到全局作用域
在看看如下的函数
注:javascript的作用域是静态作用域(又叫词法作用域),在语法分析时就能确定它的作用域,而不是运行是确定的,看如下例子就能明白了
3.全局作用域(全局对象,全局变量)
1) 浏览器端的window ,nodejs中的 global
2)模块化编程应该避免全局变量
二,闭包
1)闭包的严格定义:有函数(环境)及其封闭的自由变量组成的集合体。
2)闭包不但包括被返回的函数,还包括了函数的定义环境
2. 闭包的作用
1)嵌套的回调函数
2)实现私有成员
1) 在javascript中的作用域并不是像c中那样以花括号为一个作用域
如:
if(true){
var val = 'laumin';
}
console.log(val);//如果在c语言中这会报错,因为val未定义,而在javascript中是完全合法的
2)函数作用域(或叫局部作用域)
在javascript中引用一个变量时先从局部变量搜索,如果没有再向上层作用域搜索,直到全局作用域
var val = 'one'; function lau(){ console.log(val); } lau();//输出one function min(){ var val = 'two'; console.log(val); } min();//输出two
在看看如下的函数
var val = 'laumin'; var lau = function(){ console.log(val); var val = 'hehe'; } lau();//输出 undefined是否它的输出出乎意料,想想js变量搜索顺序就知道了,它会先在lau的作用域内搜索,发现有val变量,但当执行consol.log()时val 还为定义,所以输出undefined
注:javascript的作用域是静态作用域(又叫词法作用域),在语法分析时就能确定它的作用域,而不是运行是确定的,看如下例子就能明白了
var val = 'lau'; function lau(){ console.log(val); } lau();//输出 lau function min(){ var val = 'min'; lau(); } min();//输出 lau
3.全局作用域(全局对象,全局变量)
1) 浏览器端的window ,nodejs中的 global
2)模块化编程应该避免全局变量
二,闭包
1)闭包的严格定义:有函数(环境)及其封闭的自由变量组成的集合体。
2)闭包不但包括被返回的函数,还包括了函数的定义环境
var laumin(){ var count = 0; var get = function(){ count++; return count; }; return get; } var counter = laumin(); console.log(counter());//输出1 console.log(counter());//输出2
2. 闭包的作用
1)嵌套的回调函数
2)实现私有成员
相关文章推荐
- 一些蛋疼的JavaScript语法特性
- 深入理解javascript的一些特性(静态作用域,this指针,闭包)
- 《javascript高级程序设计》学习笔记(三):javascript 函数一些特性
- 一些蛋疼的JavaScript语法特性
- javascript中可处理的浮点数的最高精度(和小数的一些小特性)
- javascript数据类型(以及它们的一些特性与判断)
- 总结一些更多的针对webkit的HTML, CSS和Javascript方面的特性.
- javascript 的一些特性
- 用Java来比较JavaScript的一些特性
- 《javascript高级程序设计》学习笔记(一):javascript 数据类型的一些怪异特性
- 从HTML Components的衰落看Web Components的危机 HTML Components的一些特性 JavaScript什么叫端到端组件 自己对Polymer的意见
- 《javascript高级程序设计》学习笔记(一):javascript 数据类型的一些怪异特性
- javascript一些有用但又不常用的特性
- 总结一些更多的针对webkit的HTML, CSS和Javascript方面的特性.
- javascript中可处理的浮点数的最高精度(和小数的一些小特性)
- 《javascript高级程序设计》学习笔记(三):javascript 函数一些特性
- Nodejs学习中一些javascript特性的总结
- JavaScript 学习笔记一些小技巧
- 你可能不知道的一些JavaScript 奇技淫巧
- JavaScript中的一些特殊用法(五)