美文网首页
作用域和闭包

作用域和闭包

作者: Hathaway_桉 | 来源:发表于2017-07-17 22:00 被阅读0次
  • 变量提升


    图片.png

函数声明可以提前,函数表达式不可以提前。fn可以输出,fn1不可以。

<h1>题目:</h1>

图片.png

<h1>知识点:</h1>

  • 执行上下文
图片.png 图片.png
  • this
图片.png

this执行时的几种场景:

图片.png 图片.png
this===zhangsan 
this===A
this===window

在最后一种情况下,

图片.png

this==={x:100}

图片.png

上面这种方式的输出this==={y:200}

<h1>作用域</h1>

  • js中没有块级作用域
  • js只有全局作用域和函数作用域

<b>作用域链</b>
一个自由变量一直不断的向其父级作用域寻找作用域


图片.png

打印a的时候,函数里面没有定义a变量,因此找函数的父级作用域,即是全局作用域,找到了打印100。

<h1>闭包</h1>

图片.png

闭包的实际应用场景:


图片.png

上述例子可以用_list来记录变量值,第一次记录了变量的值后,第二次来的时候显示false,进不去。这样就达到了收敛权限的作用。

  • 说一下对变量提升的理解
    • 变量提升


      图片.png

函数声明可以提前,函数表达式不可以提前。fn可以输出,fn1不可以。

  • 说明this几种不同的使用场景
图片.png
  • 创建10个a标签,点击的时候弹出来对应的序号
    错误的写法,i会一直都是10。


    图片.png

    正确的写法:

 var a,i;
    for(i=0;i<10;i++){
        (function(i){
            a=document.createElement('a');
            a.innerHTML=i+"<br>";
            a.addEventListener('click',function(e){
                e.preventDefault();
                alert(i);
            });
            document.body.appendChild(a);
        })(i);

    }
  • 如何理解作用域?
图片.png
  • 总结闭包的使用场景:


    图片.png

相关文章

  • 作用域和闭包

    目录 概述 作用域编译过程词法作用域全局作用域函数作用域 闭包循环和闭包闭包的用途性能 总结 概述 作用域和闭包一...

  • javaScript门道之闭包

    闭包的学习路径:变量的作用域 -> 闭包的概念 ->闭包的应用 1.变量的作用域 变量的作用域分为作用于全局和作用...

  • 2023-01-12

    变量提升调用栈块级作用域作用域链和闭包 闭包 => 作用域链(词法作用域) => 调用栈(栈溢出) => 上下文...

  • 闭包(closure)

    ● 闭包基础 ● 闭包作用 ● 闭包经典例子 ● 闭包应用 ● 闭包缺点 ● 参考资料 1、闭包基础 作用域和作...

  • 2018-01-07 关于javascript闭包和作用域的理解

    关于 javascript 闭包的一些思考 作用域 词法作用域 函数作用域 块作用域 闭包 什么是作用域? 作用域...

  • js作用域、闭包

    闭包 闭包作用 全局 局部 作用域链

  • 浓缩解读《JavaScript设计模式与开发实践》③

    三、闭包和高阶函数 3.1 闭包 3.1.1 变量的作用域 所谓变量的作用域,就是变量的有效范围。通过作用域的划分...

  • js闭包的理解

    什么是闭包 通俗的来讲,个人觉得闭包就是延长变量作用域的函数。众所周知js的作用域分为全局作用域和链式作用域。在函...

  • 14.JS基础之作用域与闭包

    作用域: 全局作用域 函数作用域 块级作用域(ES6新增) 常见的闭包有:作为函数返回值的闭包与作为函数参数的闭包...

  • 执行环境 & 作用域 & 闭包

    执行环境 & 作用域 & 闭包 执行环境 , 作用域 , 闭包 , 闭包应用 执行环境 执行环境定义了 当前环境的...

网友评论

      本文标题:作用域和闭包

      本文链接:https://www.haomeiwen.com/subject/mrsxkxtx.html