第七章 作用域和闭包
来源:互联网 发布:淘宝女士秋季连衣裙 编辑:程序博客网 时间:2024/04/29 11:13
7.1 JavaScript作用域概要
在JavaScript中,作用域是执行代码的上下文。作用域有三种类型:全局作用域、局部作用域(有时被称为“函数作用域”)和eval作用域。
在函数内部使用var定义的代码,其作用是局部的,且只对该函数的其它表达式是“可见的”,包含嵌套/子函数的代码。在全局作用域内定义的变量从任何地方都可以访问,因为它是作用域链中的最高层/最后一个。
var foo = 0;console.log(foo);var muFuncion = function(){ var foo = 1; console.log(foo);//1 var myNestedFuntion = function() { var foo = 2; console.log(foo);//2 }();}();eval('var foo = 3; console.log(foo);');
! 包含函数的函数,会创建堆栈执行作用域。这些链接在一起的栈通常被称为作用域链。
7.2 JavaScript没有块作用域
由于逻辑语句(如if(){})和循环语句(如for)无法创建作用域,因此变量可以相互覆盖。
7.3 在函数中用var声明变量,避免作用域陷阱
JavaScript会将缺少var的变量声明(即便是在函数或者封装的函数中),声明在全局作用域中,而非局部作用域。
var foo = function(){ bar = 2; var ch = 1;};console.log(bar); //2console.log(ch); //undefined
7.4 作用域链
在JavaScript查找与变量相关的值时,会遵循一个查找链。
7.5 作用域链查找返回第一轮值
当在作用链内最近位置查找到变量时,查找即结束。
7.6 函数定义时确定作用域,而非调用时确定
7.7 函数是由作用域链引起的
var countUpFromZero = function(){ var count = 0; return function(){ return ++count; };}();console.log(countUpFromZero());//1console.log(countUpFromZero());//2console.log(countUpFromZero());//3
http://jibbering.com/faq/notes/closures/
0 0
- 第七章 作用域和闭包
- 作用域和闭包
- JavaScript作用域链和闭包
- {{JS}}函数作用域和闭包
- 词法作用域和闭包
- 词法作用域和闭包
- JavaScript 作用域和闭包
- javascript 作用域链和闭包
- 作用域链和闭包
- 细说JavaScript作用域和闭包
- JavaScript作用域和闭包
- Python函数作用域和闭包
- 详解javascript作用域和闭包
- 作用域和闭包(Closures)
- 作用域链和闭包理解
- 闭包、作用域和内存
- javascript作用域和闭包
- javascript作用域和闭包
- 安卓使用pull解析器解析xml
- android画弧线canvas.drawArc()参数详解
- MDCC2016 ppt等相关学习资料
- 29.angular的从后台获取数据的方法http模块
- Android Shape自定义纯色圆角按钮
- 第七章 作用域和闭包
- 【数据结构】二叉树的简单遍历及基本操作
- hdu 5117 Fluorescent (求期望 + DP)
- mysql bin-log日志处理详解
- 【php】正则表达式提取img的src
- 三张图讲清楚Java中的方法的参数传递机制
- 内存泄漏和内存溢出的区别
- 软著中写源代码60页快速实现方法
- impdp之table_exists_action