面试之es6

目录

面试之es6

let 和 const

  • 使用var定于的变量为全局变量,也就是在window.XX变量都可以访问到:
  • 作用域:
    • JS中作用域有:全局作用域、函数作用域。没有块作用域的概念。
    • ECMAScript 6(简称ES6)中新增了块级作用域。
      • 块作用域由 { } 包括,if语句和for语句里面的{ }也属于块作用域

验证块级作用域

  • 由于var 定义的变量为全局变量,var对于定义的变量或者函数有着变量的提升,对于单纯的变量值的话,则是一步到位,既提升定义值也赋值,于是会打印出 b 的值;(注意点:函数的变量提升,只是提升函数的定义,不提升函数的调用,需要根据执行消息队列之中,先执行一步一步执行同步任务等!
  • 由于let 和 const 存在块级作用域,不存在变量提升这回事,因此只是限制在定义的块级作用域内可以访问!(注意点:在内层块级作用域可以访问外层的变量,这涉及到作用域链的访问
  • let 定义的变量,在块级作用域内,只能定义一次,否者会提示XX变量 has already been declared 已经被定义了注意点:let定义的变量,可以修改所定义的值
  • const定义的变量,具有块级作用域,在块级作用域内只能定义一次,否者提示已被定义了,值得注意的是const定义的变量是只读的,不可修改的,否者会提示 XXX is read-only
<template>
  <div></div>
</template>
<script>
export default {
  data() {
    return {};
  },
  created() {
    this.init();
  },
  methods: {
    init() {
      {
        var b = 10;
        let c = 20;
        const d = 30;
        console.log("内b", b, "内c", c,"内d",d);//内b 10 内c 20 内d 30
        {
          console.log("第二层内c",c); // 第二层内c 20
        }
      }
      console.log("外b", b,);//外b 10
      console.log("外c", c); // 报错 c is not defined found in
      console.log("外d", d);// 报错 d is not defined found in
    },
  },
};
</script>
上一篇:ES6第二天


下一篇:ES6 数组新增方法