zoukankan      html  css  js  c++  java
  • 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 

  • 相关阅读:
    [干货,阅后进BAT不是梦]面试心得与总结---BAT、网易、蘑菇街
    [干货,阅后进BAT不是梦]面试心得与总结---BAT、网易、蘑菇街
    JSP九大内置对象,七大动作,三大指令
    JSP九大内置对象,七大动作,三大指令
    Java异常处理
    Java异常处理
    java和C和C++关系
    c++中指针常量,常指针,指向常量的常指针区分
    c++中指针常量,常指针,指向常量的常指针区分
    Method and apparatus for verification of coherence for shared cache components in a system verification environment
  • 原文地址:https://www.cnblogs.com/learning-skills/p/7528954.html
Copyright © 2011-2022 走看看