美文网首页JS基础
JS基础知识(2) -- 作用域和作用域链

JS基础知识(2) -- 作用域和作用域链

作者: 凯凯frank | 来源:发表于2019-12-25 21:04 被阅读0次

作用域

作用域就是变量与函数的可访问范围

  • 全局作用域
  • 函数作用域
  • ES6块级作用域

ES5没有块级作用域,ES6有

for(var i=0; i<5; i++){
    var num = 10;//全局作用域
    let num2 = 3;//块级作用域
}

作用域链

每个函数都有自己的上下文对象,上下文对象中有一个重要属性:变量对象,用来保存这个上下文中定义的所有变量和函数。而作用域链就是变量对象的链表。作用域链的第一个是当前函数的活动对象(活动对象和变量对象是同一个东西在不同时期的两种叫法。函数未执行(创建上下文的期间)时叫变量对象,函数执行以后就叫活动对象),第二个是包含环境的上下文的变量对象...最后一个是全局上下文的变量对象。变量的查找会沿着作用域链逐级向后查找,如果在某个变量对象中找到了,则使用它。找不到则报错。

变量提升

变量提升只是提升变量的声明,变量的赋值不会提升。

//fn1() //error
fn2()

//函数表达式 不能提升
var fn1 = function(){
  console.log('111')
}
//函数声明 可以提升
function fn2(){
    console.log('222')
}

相关文章

  • JS 作用域链、导入导出

    1. JS 的作用域链 作用域在 JS 中表示变量的可访问性和可见性。JS 作用域有 3 种:1. 全局作用域;2...

  • 2018-12-18

    JS高级 作用域&作用域链 作用域: 1.作用域的个数:n(函数声明的个数)+1(全局作用域)2.作用域不会存储变...

  • 干货!月薪80k前端大佬面试笔记:JS闭包解析!

    三点注意事项 JS没有块级作用域,只有全局作用域和局部作用域(函数作用域)。 JS中的作用域链,内部的作用域可以访...

  • JavaScript散乱(四、细节)

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

  • JS作用域的练习

    Js作用域练习demo1 Js作用域练习demo2 JS作用域练习demo3 JS作用域练习demo4 JS作用域...

  • JS基础知识:变量对象、作用域链和闭包

    JS基础知识:变量对象、作用域链和闭包 前言:这段时间一直在消化作用域链和闭包的相关知识。之前看《JS高程》和一些...

  • 作用域和作用链

    关键词:作用域作用链 作用域 js中没有块级作用域 全局作用域,函数作用域太简单,就不演示(≧▽≦)/啦啦啦 作用...

  • JavaScript 函数闭包(colsure)

    理解闭包,你首先必须理解JS的变量作用域,JavaScript作用域和作用域链。 ES6之前,变量的作用域分为全局...

  • 闭包

    一、理解闭包前js基础1、作用域链(作用域、作用域链中有说)。2、js的内存回收机制。一个函数在执行开始的时候,会...

  • 变量作用域

    变量作用域:静态作用域、动态作用域JS变量作用域:JS使用静态作用域JS没有块级作用域(全局作用域、函数作用域等)...

网友评论

    本文标题:JS基础知识(2) -- 作用域和作用域链

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