一、函数作用域

1.函数作用域

就是作用域在一个“Function”里,属于这个函数的全部变量都可以在整个函数的范围内使用及复用。

function foo(a) {
var b = 2;
function bar() {
// ...
}
var c = 3;
} bar(); // 失败
console.log( a, b, c ); // 三个全都失败

上面的“foo”函数内的几个标识符,放到函数外面访问就都会报错。

aaarticlea/png;base64,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" alt="" />

2.立即执行函数表达式

在任意代码片段外部添加包装函数,可以将内部的变量和函数定义“隐藏”起来,外部作用域无法访问包装函数内部的任何内容。

例如上面的bar、a等几个标识符。这样能够保护变量不被污染。

在写插件的时候经常会用到立即执行函数表达式,为的就是保护里面的变量。

var a = 2;
(function foo() {
var a = 3;
console.log( a ); // 3
})();
console.log( a ); // 2

“foo”中第一个(  )将函数变成表达式,第二个(  )执行了这个函数。

有一个专用术语:IIFE,代表立即执行函数表达式(Immediately Invoked Function Expression);

1. 进阶用法是把它们当作函数调用并传递参数进去

(function IIFE( global ) {
var a = 3;
console.log( a ); // 3
console.log( global.a ); // 2
})( window );

2. 一种变化的用途是倒置代码的运行顺序,在CMD或AMD项目中被广泛使用。

(function IIFE(factory) {
factory( window );
})(function def( global ) {
var a = 3;
console.log( a ); // 3
console.log( global.a ); // 2
});

二、块作用域

JavaScript不支持块作用域。

for(var i=0; i<10; i++) {
console.log( i );
}

上面的代码中的“i”相当于下面的

var i;
for(i=0; i<10; i++) {
console.log( i );
}

但也有例外,“try/catch”,catch就是一个块作用域。

try{
undefined(); // 执行一个非法操作来强制制造一个异常
}
catch(err) {
console.log( err ); // 能够正常执行!
}
console.log( err ); // ReferenceError: err not found

aaarticlea/png;base64,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" alt="" />

ES6改变了现状,引入了新的let关键字,let关键字可以将变量绑定到所在的任意作用域中(通常是{ .. }内部)。换句话说,let为其声明的变量隐式地了所在的块作用域。

三、提升

函数作用域和块作用域的行为是一样的,可以总结为:任何声明在某个作用域内的变量,都将附属于这个作用域。

1)编译与执行

变量和函数的所有声明都会在任何代码被执行前首先被处理,可以看下面的代码事例。

a = 2;
var a;
console.log(a);//2

这段代码等价于:

var a;//定义声明是在编译阶段进行
a = 2;//赋值声明会被留在原地等待执行阶段
console.log(a);

2)函数优先

函数会首先被提升,然后才是变量。

foo(); // 1
var foo;
function foo() {
console.log( 1 );
}
foo = function() {
console.log( 2 );
};

var foo函数表达式尽管出现在function foo()的声明之前,但它是重复的声明(因此被忽略了),因为函数声明会被提升到普通变量之前。

而上面的代码相当于:

function foo() {
console.log( 1 );
}
foo(); // 1
foo = function() {
console.log( 2 );
};

四、闭包

闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,
通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域,将函数内部的变量和方法传递到外部

闭包的特性:

1.函数内在嵌套函数
2.内部函数可以引用外层的参数和变量
3.参数和变量不会被垃圾回收机制回收

1)定义

当函数可以记住并访问所在的作用域时,就产生了闭包,即使函数是在当前作用域之外执行

function foo() {
var a = 2;
function bar() {
console.log( a );
}
return bar;
} var baz = foo();
baz(); // 2 —— 这就是闭包的效果。

1. 将函数“bar”赋值给“baz”,执行“baz”,当前作用域并不在“bar”的作用域,但是可以执行。

2. 闭包还会阻止垃圾回收,当“foo”执行完后,内部作用域仍然存在。这样才能让“baz”执行。

2)将函数作为参数传递

function foo() {
var a = 2;
function baz() {
console.log( a ); // 2
}
bar( baz );
} function bar(fn) {
fn(); //这就是闭包!
}

把内部函数baz传递给bar,当调用这个内部函数时(fn),它涵盖的foo()内部作用域的闭包就可以观察到了,因为它能够访问a。

如果将函数当作第一级的值类型并到处传递,你就会看到闭包在这些函数中的应用。

定时器事件监听器Ajax请求跨窗口通信Web Workers或者任何其他的异步(或者同步)任务中,只要使用了回调函数,实际上就是在使用闭包!

3)循环和闭包

for (var i = 1; i <= 5; i++) {
setTimeout(function timer() {
console.log(i);
}, i * 1000);
}

每次打印出来都将会是6,延迟函数的回调会在循环结束时才执行

根据作用域的工作原理,实际情况是尽管循环中的五个函数是在各个迭代中分别定义的,但是它们都被封闭在一个共享的全局作用域中,因此实际上只有一个i

现在用闭包来实现每次打印不同的i。

for (var i = 1; i <= 5; i++) {
(function(j) {
setTimeout(function timer() {
console.log(j);
}, j * 1000);
})(i);
}

IIFE会通过声明并立即执行一个函数来创建作用域。setTimeout中的回调可以记住当前的作用域,每个作用域中的参数“j”都是不同的。

声明:参考博客http://www.cnblogs.com/strick/p/5806427.html

javascript最容易混淆的作用域、提升、闭包的更多相关文章

  1. 《你不知道的JavaScript》第一部分:作用域和闭包

    第1章 作用域是什么 抛出问题:程序中的变量存储在哪里?程序需要时,如何找到它们? 设计 作用域 的目的:为了更好地存储和访问变量. 作用域:根据名称查找变量的一套规则,用于确定在何处以及如何查找变量 ...

  2. javascript(面向对象,作用域,闭包,设计模式等)

    javascript(面向对象,作用域,闭包,设计模式等) 1. 常用js类定义的方法有哪些? 参考答案:主要有构造函数原型和对象创建两种方法.原型法是通用老方法,对象创建是ES5推荐使用的方法.目前 ...

  3. 你不知道的JavaScript(作用域和闭包)

    作用域和闭包 ・作用域 引擎:从头到尾负责整个JavaScript的编译及执行过程. 编译器:负责语法分析及代码生成等. 作用域:负责收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施一套非 ...

  4. 原来JS是这样的 - 提升, 作用域 与 闭包

    引子 长久以来一直都没有专门学过 JS ,因为之前有自己啃过 C++ ,又打过一段时间的算法竞赛(写得一手好意大利面条),于是自己折腾自己的网站的时候,一直都把 JS 当 C 写.但写的时候总会遇到一 ...

  5. javascript作用域和闭包之我见

    javascript作用域和闭包之我见 看了<你不知道的JavaScript(上卷)>的第一部分--作用域和闭包,感受颇深,遂写一篇读书笔记加深印象.路过的大牛欢迎指点,对这方面不懂的同学 ...

  6. javascript的作用域和闭包(三)闭包与模块

    一些很重要的说明:前面三篇博客详细的介绍了,引擎与编译器和作用域的关系,重点需要理解的是编译器中的分词与词法分析,JavaScript的特有的“赋值操作的左右侧”引用操作:编译阶段的词法作用域的工作原 ...

  7. JavaScript之作用域和闭包

    一.作用域 作用域共有两种主要的工作模型:第一种是最为普遍的,被大多数编程语言所采用的词法作用域,另外一种叫作动态作用域: JavaScript所采用的作用域模式是词法作用域. 1.词法作用域 词法作 ...

  8. 你不知道的JavaScript(上)作用域与闭包

    第一部分 作用域与闭包 第一章 作用域是什么 1.作用域 变量赋值操作会执行两个动作:首先编译器会在当前作用域中声明一个变量(如果之前没有声明过), 然后会在运行时引擎会在作用域中查找该变量,找到就会 ...

  9. 《你必须知道的javascript(上)》- 1.作用域和闭包

    1 作用域是什么 1.1 编译原理 分词/词法分析(Tokenizing/Lexing) 将由字符组成的字符串分解成(对编程语言来说)有意义的代码块,这些代码块被称为词法单元(token). 解析/语 ...

随机推荐

  1. Nginx+PHP-fpm高负载优化及压力测试方法

    Nginx+PHP-fpm组合,以内存占用小,负载能力强壮的特点,成为小内存VPS建站的首选组合.我们一起来探讨一下nginx+php-fpm高负载的优化方法. 先来看看nginx配置参数的优化.ng ...

  2. iOS监听键盘事件

    #pragma mark - view life cycle - (void)viewDidLoad { [super viewDidLoad]; [[NSNotificationCenter def ...

  3. python中os/sys/platform模块区别

    os:This module provides a portable way of using operating system dependent functionality. sys:This m ...

  4. Fortify

    sourceanalyzer -b my_buildid -scan -f xxx.fpr -b  取一个build的ID号,通常以这个项目名称加扫描时间为buildID-Xmx 指定JVM使用的最大 ...

  5. PHP访问MSSQL数据库(实例代码)

     本例子只作为简单的引导,实现一个简单的查询: <!DOCTYPE HTML> <html lang="en-US"> <head> <t ...

  6. CSS3导航效果

    来自codepen http://codepen.io/mouradhamoud/pen/RRvVZp <!DOCTYPE html> <html> <head> ...

  7. Criteria 和 DetachedCriteria的区别与使用

    Criteria 和 DetachedCriteria 的主要区别在于创建的形式不一样, Criteria 是在线的,所以它是由 Hibernate Session 进行创建的:而 DetachedC ...

  8. Linux下的微秒级定时器: usleep, nanosleep, select, pselect

    Linux下的微秒级定时器: usleep, nanosleep, select, pselect 标签: linuxnulldelaystructdate 2012-02-07 23:29 4979 ...

  9. chrome(谷歌浏览器)老是提示此文件可能损害计算机

    chrome://settings/advanced设置-高级设置-“隐私设置”-取消选中“启用针对网上诱骗和恶意软件的防护功能”复选框试试,

  10. vim如何进行分屏操作

    文章转自:http://www.netingcn.com/vim-%E5%88%86%E5%B1%8F%E6%93%8D%E4%BD%9C.html 启动vim打开多个文件并分屏显示: vim -on ...