• let, var 和const命令


    1. let 与 var之间的区别

      (1) 作用范围: let 作用于所处变量代码块, 而var作用于函数作用域。

           (2) let不存在变量提升

           (3) let存在暂时性死区(只要一进入当前作用域, 所使用的变量就已经存在,但不可获取,只有等到声明那一行,才可获取和使用变量)

      (4) let不允许在相同作用域内,重复声明同一个变量

    2. 块级作用域

      a.  作用

        (1) 防止内部变量被外部变量覆盖

        (2) 防止用来计数的循环变量泄漏为全局变量

      b. 实现

        (1) let为javascript实现了块级作用域

        (2) es6允许块级作用域任意嵌套,并且外层作用域不可以读取内层作用域的变量

        (3) 内层块级作用域可以定义与外层块级作用域相同的参数名

    3. 函数作用域和函数作用域

      问题来源:函数能不能在块级作用域中声明??

      对于未实现es6的浏览器:

        (1) 对于es5来说,函数只能在顶层作用域和函数中声明,若在块级作用域中声明是非法的。但是浏览器没有遵循这个规定, 在块级声明函数时,函数将被提升到当前函数的头部。

        (2) 而对于es6中,在块级作用域中声明函数时,将函数声明定义为let, 块级作用域不能使用

      对于实现es6的浏览器:

        (1) 允许在块级作用域内声明函数

        (2) 函数声明类似于var, 实现状态t提升

        (3) 函数提升还是提升所在的块级作用域的头部

      块级作用域把多个操作封装在一起,相当于语句,没有返回值。可以用do实现返回值。

    4. const 命令

      (1) 基本用法

        const声明的变量,一旦声明了, 就不可以更改,而且声明时,必须初始化。其它用法与let用法一样。

      (2) 本质

        const实际上保证不是变量的值不变,而是变量所指的地址不变。对于基本类型来说, 值保存变量多只的那个内存地址,等于常量。而对于引用类型来说,变量保存是地址,一个指针,至于指向数据结构是否变化无法保证。可以用object.freeze方法冻结对象内部的数据结构。

    5. es6声明变量的6种方法

      var , function, let, const, class, import 

  • 相关阅读:
    团队冲刺第一天
    第八周进度报告
    团队会议01
    《梦断代码》阅读笔记(三)
    《梦断代码》阅读笔记(二)
    《梦断代码》阅读笔记(一)
    SCRUM第六天
    SCRUM第五天
    大白话strom——问题收集(持续更新ing)
    maven环境快速搭建(转)
  • 原文地址:https://www.cnblogs.com/learning-skills/p/7528954.html
Copyright © 2020-2023  润新知