• var, let ,const区别


    ES6中加入了let,const字符,先说说新的区别:

    作用域:let 声明的变量只在它所在的代码块内有效,而且不存在变量提升,即变量可以在声明之前使用,值为undefined。let未声明变量前会报错。

    如果区块内存在let和const命令,这个代码块对这些命令声明的变量从一开始就形成了封闭作用域。在声明前调用是会报错的。

    let 不允许重复声明同一个变量,否则报错。

    1,(块级作用域)为什么需要块级作用域?
    ES5只有全局作用域和函数作用域,没有块级作用域。
    场景一:内层变量会覆盖外层变量

    var tmp = new Date();
    
    function f() {
      console.log(tmp);
      if (false) {
        var tmp = 'hello world';
      }
    }
    
    f();

    场景二:循环变量会泄漏为全局变量

    var s = 'hello';
    
    for (var i = 0; i < s.length; i++) {
      console.log(s[i]);
    }
    
    console.log(i); // 5

    let实际上为JavaScript新增了块级作用域,从而外层作用域无法读取内层作用域的变量。

    在内层作用域中可以定义外层作用域同名变量,不会覆盖外层变量。

    以前的立即执行函数可以直接用{}包起来。

    const声明一个只读常量,一旦声明,就必须立即初始化,而且值不能改变。

    如果只声明不赋值就会报错,作用域与let相同。

    ES6中声明变量的方法有6种:var ,function,let,const,还有import和class

  • 相关阅读:
    Leecode刷题之旅-C语言/python-67二进制求和
    maven 聚合
    maven 继承
    maven 常用命令
    maven 术语
    maven安装
    RabbitMQ 消费消息
    RabbitMQ 生产消息并放入队列
    RabbitMQ 在 web 页面 创建 exchange, queue, routing key
    mybatis 通过实体类进行查询
  • 原文地址:https://www.cnblogs.com/tangjiao/p/8991176.html
Copyright © 2020-2023  润新知