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

作用域和作用域链

作者: 独角仙没有角 | 来源:发表于2019-06-27 18:39 被阅读0次

"JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里。" ——《JavaScript权威指南》

var name = 'Schopenhauer'
// getName 封闭的作用域
function getName () {
  console.log(name)
}
// myName 封闭的作用域
function myName () {
  var name = 'wangxi'
  getName()
}

myName() // Schopenhauer

JavaScript 中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里

执行 myName,函数内部执行了 getName,而 getName 是在全局环境下定义的,因此尽管在 myName 中定义了变量 name,对getName 的执行并无影响,getName 中打印的依然是全局作用域下的 name。

调用函数getName是在其先定义好的作用域中解析运行,因为在getName函数作用域中没有找到name变量,因此到外部全局作用域中搜索变量name,因此是Schopenhauer,而不是在myName去寻找的,严格意义上讲,所以有的函数都是闭包,具备独立的执行环境和作用域链,通过闭包实现,实现跨作用域访问变量(外部访问内部)
思考题目

var name = 'Schopenhauer'

function getName () {
  var name = 'Aristotle'
   var intro = function() {  // 这是一个闭包
      console.log('I am ' + name)
   }
   return intro
}

function showMyName () {
   var name = 'wangxi'
   var myName = getName()
   myName()
}

showMyName()

相关文章

  • 作用域链和闭包

    在谈作用域链之前先说一下与作用域链关系紧密的执行环境和作用域。 作用域:作用域指的是变量的适用范围。 作用域链:作...

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

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

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

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

  • JS 作用域

    作用域 作用域:限制某个变量在某个区域内有效 作用域分为 全局作用域 和 局部作用域 作用域链 从里到外依次执行 ...

  • 2023-01-12

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

  • JavaScript核心技术开发解密读书笔记(第五章)

    第五章 作用域与作用域链 1. 作用域 常见的作用域有两种,全局作用域和函数作用域。ES6中新增了块级作用域。全局...

  • 5分钟入门闭包

    理解闭包前先要理解两个概念:作用域和作用域链。一、作用域分为: 全局作用域 函数作用域 var a = 100 f...

  • web性能实践

    一. 作用域 前面我们了解作用域概念的以及作用域链是如何运作的。 随着作用域链中的作用域数量的增加,访问当前作用域...

  • JavaScript散乱(四、细节)

    js高级 案例问题 作用域和作用域链 全局作用域也就是window和函数作用域,不考虑es6的块级作用域前提下,作...

  • javascript基础知识问答-作用域和闭包

    1.理解词法作用域和动态作用域2.理解JavaScript的作用域和作用域链3.理解JavaScript的执行上下...

网友评论

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

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