美文网首页
函数作用域

函数作用域

作者: 饥人谷_菜菜 | 来源:发表于2016-11-29 13:55 被阅读0次

函数声明和函数表达式有什么区别

  • 函数声明可以像变量声明前置一样,所以在作用域上下任何地方可以调用。
  • 函数表达式只能在赋值后调用

什么是变量的声明前置?什么是函数的声明前置

  • JavaScript解析器先解析所有变量的声明,提升到各自作用域的顶端,再运行代码
  • 函数声明提前类似于变量声明提前
  • 顺序为 变量 -> 函数 -> 参数
声明提前.png

arguments 是什么

  • 一组类数组形式的参数对象
arguments.png

函数的重载怎样实现

  • 在JavaScript中可以传入不同组别的参数来实现函数重载
重载.png

立即执行函数表达式是什么?有什么作用

  • 用()运算符
    1. (function(){}());
    2. (function(){})();
  • 一是不必为函数命名,避免了污染全局变量;
  • 二是IIFE内部形成了一个单独的作用域,可以封装一些外部无法读取的私有变量。

什么是函数的作用域链

  • 函数对象的一个内部属性[scope]包含了函数被创建时的作用域中对象的集合,这个集合被称为函数的作用域链。
    1. 函数创建时,它的作用域链中会填入一个全局对象,该全局对象包含了所有全局变量。
    2. 函数执行时会创建一个称为“运行期上下文(execution context)”的内部对象,运行期上下文定义了函数执行时的环境。每个运行期上下文都有自己的作用域链,用于标识符解析,当运行期上下文被创建时,而它的作用域链初始化为当前运行函数的[[Scope]]所包含的对象。
    3. 这些值按照它们出现在函数中的顺序被复制到运行期上下文的作用域链中。它们共同组成了一个新的对象,叫“活动对象(activation object)”,该对象包含了函数的所有局部变量、命名参数、参数集合以及this,然后此对象会被推入作用域链的前端。
    4. 当运行期上下文被销毁,活动对象也随之销毁。
      在函数执行过程中,每遇到一个变量,都会经历一次标识符解析过程以决定从哪里获取和存储数据。该过程从作用域链头部,也就是从活动对象开始搜索,查找同名的标识符,如果找到了就使用这个标识符对应的变量,如果没找到继续搜索作用域链中的下一个对象,如果搜索完所有对象都未找到,则认为该标识符未定义。函数执行过程中,每个标识符都要经历这样的搜索过程。
![作用域链1.png](https://img.haomeiwen.com/i37775/287f7169acad343d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

代码

以下代码输出什么?

代码1.png

写一个函数,返回参数的平方和?

代码2.png

如下代码的输出?为什么

代码3.png

如下代码的输出?为什么

代码4.png

如下代码的输出?为什么

代码5.png

如下代码的输出?为什么

代码6.png

如下代码的输出?为什么

代码7.png

如下代码的输出?为什么

代码8.png

如下代码的输出?为什么

代码9.png

如下代码的输出?为什么

代码10.png

相关文章

  • JavaScript 作用域和闭包理解

    作用域: 分为函数作用域,和块级作用域; 函数作用域 函数作用域外面的无法访问函数作用域内部的变量和函数,这样就可...

  • JS的作用域

    JS的作用域: 全局作用域、函数作用域、eval 作用域、块级作用域 全局作用域: 函数作用域: 结果截屏: 说...

  • 详解Kotlin中的作用域函数

    Kotlin作用域函数 作用域函数,Kotlin在语法层面支持拓展函数,作用域函数,作用域函数是指对数据做一些变换...

  • 1. let , const 块级作用域

    作用域全局作用域 => global函数作用域 => 因函数执行而产生的作用域 块级作用域形式 : { }特点 :...

  • js 变量作用域问题 以及 let

    JavaScript中有以下两种作用域 全局作用域函数作用域全局作用域是函数之外(最外层代码)的作用域。在函数之外...

  • 第九天,函数作用域和声明提前

    函数作用域和函数声明提前。 函数作用域,分为全局作用域和部分作用域,在系统执行函数时会自动创建一个作用域,在执行完...

  • C - 作用域

    C - 作用域 一个 C 变量的作用域可以是: 块作用域 函数作用域 函数原型作用域 或 文件作用域 作用域描述程...

  • 作用域

    标识符的作用域有函数原型作用域、局部作用域(块作用域)、类作用域和 命名空间(namespace) 作用域 函数原...

  • 变量声明、声明提前和作用域

    一. 作用域 分为全局作用域和函数作用域 函数作用域简言之就是:变量在声明他们的函数体以及这个函数体嵌套的任意函数...

  • 前端JS基础三(作用域 闭包)

    作用域 作用域链 注意:函数的父级作用域是函数定义时候的作用域,不是函数执行时候的作用域,也就是说那个作用域定义了...

网友评论

      本文标题:函数作用域

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