美文网首页
ECMAScript 6.0 作用域

ECMAScript 6.0 作用域

作者: 张思学 | 来源:发表于2019-11-04 18:45 被阅读0次

ES6中对作用域有了一个明确的界限,作用域指的是“块”作用域

// ES5 中作用域

const callbacks = []
for (var i = 0; i <= 2; i++) {
    callbacks[i] = function() {
        return i * 2
    }
}
console.table([
    callbacks[0](),
    callbacks[1](),
    callbacks[2](),
])
/* 打印结果: value都是6
 * 为什么会是三个6,因为for里面用的是var声明的变量
 * var是全局变量,这里面会存在一个变量提升,var i 不在循环之内
*/

//ES6

const callbacks2 = []
for (let j = 0; j <= 2; j++) {
    callbacks2[j] = function() {
        return j * 2
    }
}

console.table([
    callbacks2[0](),
    callbacks2[1](),
    callbacks2[2](),
])
/* 打印结果: value: 0、2、4
 * 值是正常的,这里接触到let,  let 声明的变量只在所在的代码块内有效。
 * 代码块就是{....},它会把值保存下来供{}内的代码使用

用 const 来声明变量,更清晰的理解块作用域

{
  const a = 1
  console.log(a) //打印结果:1
  //consot a = 2 报错它会告诉你a是只读的
  {
    const a = 2
    console.log(a) //打印结果: 2
    const b = 3
  }
  console.log(b) //打印结果:空,没有值,因为 const b 声明在块作用域以内出了块作用域是不存在的
}

相关文章

  • ECMAScript 6.0 作用域

    ES6中对作用域有了一个明确的界限,作用域指的是“块”作用域 // ES5 中作用域 //ES6 用 const ...

  • EcmaScript 6 - 块级作用域(block scope

    1. EcmaScript 5作用域 EcmaScript5的作用域有全局作用域(global scope)与函数...

  • 【前端学习笔记】JavaScript的 作用域与变量提升。

    作用域(scope) 在ECMAScript中,JavaScript只有两类作用域:全局作用域、函数作用域。 全局...

  • JS语法基础整理

    块作用域 : { }JS中作用域有:全局作用域、函数作用域。没有块作用域的概念。ECMAScript 6(简称E...

  • JavaScript块级作用域

    块作用域{ }JS中作用域有:全局作用域、函数作用域。没有块作用域的概念。ECMAScript 6(简称ES6)中...

  • 13 丁老师讲解 es6练习题

    es 全称是? ECMAscript es6之前的作用域有哪些?全局作用域函数作用有 es6引入了什么作用域?块级...

  • 【JavaScript】作用域

    在ES6,ECMAScript 2015版本没有发布之前,有全局作用域、函数作用域,作用域就是变量声明后能够被调用...

  • let、const与块级作用域

    ES2015之前,只有全局作用于和函作用域 作用域是ECMAScript编程中非常重要的一个概念,良好的作用域控制...

  • ReactJs学习

    1、ECMAScript的相关知识 (1)let将变量的作用域设置为:块级作用域 (2)const 设置常量 (3...

  • ES6(玺哥篇)

    ES6 - ECMAScript 6.0(ES2015) ECMAScript 6.0(以下简称 ES6)是 Ja...

网友评论

      本文标题:ECMAScript 6.0 作用域

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