美文网首页
函数和作用域链

函数和作用域链

作者: 小鸡咯咯哒 | 来源:发表于2020-05-10 09:56 被阅读0次

函数

含有不定条语句的代码块,可以反复使用,可以传递参数,可以返回值

1. 声明

  • function
function name(){
}
name();
  • 函数表达式
var name = function(){
}
name();

注意 这种写法将一个匿名函数赋值给变量。这时,这个匿名函数又称函数表达式(Function Expression),因为赋值语句的等号右侧只能放表达式。
采用函数表达式声明函数时,function命令后面不带有函数名。如果加上函数名,该函数名只在函数体内部有效,在函数体外部无效。

2. 函数提升

  • 用function声明函数,整个函数会像变量声明一样,被提升到代码头部。所以,下面的代码不会报错。
  • 用函数表达式声明函数,调用要在声明后才有效

作用域链

代码例子:

var a = 1
function fn1(){
  function fn2(){
    console.log(a)
  }
  function fn3(){
    var a = 4
    fn2()
  }
  var a = 2
  return fn3
}
var fn = fn1()
fn() //输出多少

输出为2
fn() = fn1(),返回fn3(),fn3()调用fn2(),输出a,fn2()没有定义a,向上级查找,a=2

像这样内部函数用链式查找访问外部函数变量的这种机制称为作用域链

  • 函数在执行的过程中,先从自己内部找变量
  • 如果找不到,再从创建当前函数所在的作用域去找, 以此往上
  • 注意找的是变量的当前的状态

相关文章

  • JS_0: 执行环境和作用域链

    JavaScript,目前对于执行环境和作用域链的理解 什么是作用域链? 要讲作用域链就得先讲执行环境。 每个函数...

  • 作用域和作用域链

    作用域和作用域链 作用域 作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。在Java...

  • 作用域、作用域链、闭包、面向对象、执行上下文

    作用域 作用域链 函数的提前声明 闭包 JavaScript 闭包与类(原型链)之间的开发方式 构造函数和普通函数...

  • 彻底搞懂JS作用域和作用域链

    作用域和作用域链 作用域:决定了代码区块中变量和其他资源的可见性; ·全局作用域和函数作用域 作用域是分层的内部可...

  • JavaScript作用域链和闭包究竟是什么

    JavaScript作用域链 作用域 作用域就是变量和函数的可访问范围, 控制着变量和函数的可见性与生命周期, 在...

  • 作用域链

    作用域链(scope chain) 理解: 作用域链决定了哪些数据能被函数访问。当一个函数创建后,它的作用域链会被...

  • 闭包的实现原理

    作用域和作用域链 在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。 全局变量 变量在函数外定...

  • 我的JS笔记 -- 作用域

    作用域和作用域链概念 作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。在JavaSc...

  • JavaScript面试考点之作用域和作用域链、执行上下文和执行

    1、作用域和作用域链 1)作用域 作用域是变量(变量作用域又称上下文)和函数生效(能被访问)的区域。作用域决定了代...

  • 作用域链&闭包&函数相关

    作用域链 在JS中函数可以创建作用域; 函数中又可以创建函数(可以开辟新的作用域); 函数内部的作用域可以访问外部...

网友评论

      本文标题:函数和作用域链

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