zoukankan      html  css  js  c++  java
  • js作用域链

    js作用域

    1.js的作用域没有块级作用域这一说 只有函数作用域和全局作用域 ,函数可以访问全局中声明的变量

    上面说到块级作用域  看第二三个输出  在for语言里面声明输出i=1,然而出了for语句还能输出i ,而在函数体外面输出i报错,所以js只有函数作用域

    2.关于预解析

    在函数体外先定义了i  在函数体中第一次输出时  输出undefined  而不是99999? 这是因为js中存在预解析  因为函数体后面有声明这个变量所以会提前解析这个变量  输出undefined

    3.就近原则输出

    输出后定义的那个值

     4.注意一点在函数块内不使用关键字var给变量赋值  那么这个变量就是全局的  但是可以通过delete删除这个变量

    作用域链

    在调用某个函数时 js会为这个函数建立一个可执行环境,并且每个可执行环境都有一个与之对应的活动对象,环境中的变量和函数都在这个对象中

     js的执行顺序是根据函数的调用来决定的,当一个函数被调用时,该函数环境的变量对象就被压入一个环境栈中。而在函数执行之后,栈将该函数的变量对象弹出,把控制权交给之前的执行环境变量对象。

    当代码在一个环境中执行时,会创建以个变量对象的作用域链,作用域链的前端都是当前代码所在环境的执行环境 。 下一个变量对象为外部环境,一直延续下去

    如果这个环境是函数  就将其活动对象作为变量对象  活动对象在最开始只包含一个argument对象 。

    以上为简单的作用域链查找标识符

    作用域链还关系到闭包,this等等

    未完待续

    优秀总结博文

    https://blog.csdn.net/whd526/article/details/70990994

  • 相关阅读:
    优秀个人博客
    redis 3.0 集群__监控警报工具(sentinel)
    redis 3.0 集群__hashTag
    shell__常用命令__sed
    shell__常用命令__grep
    shell__常用命令__awk
    shell 常用命令集合
    redis 3.0 集群__配置文件详解(常用配置)
    redis 3.0 集群__故障测评
    tcp 建立连接的三次握手,以及关闭连接的4次挥手
  • 原文地址:https://www.cnblogs.com/theworldofbeisong/p/8821952.html
Copyright © 2011-2022 走看看