首页 > 其他分享 >(ECMAScript)ES标准下中的let、var和const

(ECMAScript)ES标准下中的let、var和const

时间:2022-11-02 11:13:05浏览次数:43  
标签:const log 下中 num let var 100

ES标准下中的let,var和const

  1. let会报重复声明,var则比较随意,重不重复无所谓

    // 使用 var 的时候重复声明变量是没问题的,只不过就是后面会把前面覆盖掉
    var num = 100
    var num = 200
    
    // 使用 let 重复声明变量的时候就会报错了
    let num = 100
    let num = 200 // 这里就会报错了
    
    // 使用 const 重复声明变量的时候就会报错
    const num = 100
    const num = 200 // 这里就会报错了
    
  2. var对变量预解析可以“先使用再定义”,而let和const则不行,也就是没有变量提升

    // 因为预解析(变量提升)的原因,在前面是有这个变量的,只不过没有赋值
    console.log(num) // undefined
    var num = 100
    
    // 因为 let 不会进行预解析(变量提升),所以直接报错了
    console.log(num) 
    let num = 100
    
    // 因为 const 不会进行预解析(变量提升),所以直接报错了
    console.log(num) 
    const num = 100
    
  3. “let先使用再定义”(补充上一条)

  4. var与window挂钩,会自动成为window的属性,let不会

    var name = 'dasha'
    let age = 12
    console.log(window.name)	//	dasha
    console.log(window.age)		//	undefined
    
  5. const定义常量,以上的都是叫变量,let和var都可以更改变量的值,const则不行

    let num = 100
    num = 200
    console.log(num) // 200
    
    const num = 100
    num = 200 // 这里就会报错了,因为 const 声明的变量值不可以改变(我们也叫做常量)
    
  6. const声明时必须赋值,否则就会报错

    let num
    num = 100
    console.log(num) // 100
    
    const num // 这里就会报错了,因为 const 声明的时候必须赋值
    
  7. let和const都会被代码块限制作用范围,而var只有函数才能限制范围,其他的不能限制

    // var 声明的变量只有函数能限制其作用域,其他的不能限制
    if (true) {
        var num = 100
        }
    console.log(num) // 100
    
    // let 声明的变量,除了函数可以限制,所有的代码块都可以限制其作用域(if/while/for/...)
    if (true) {
        let num = 100
        console.log(num) // 100
    }
    console.log(num) // 报错
    
    // const 声明的变量,除了函数可以限制,所有的代码块都可以限制其作用域(if/while/for/...)
    if (true) {
        const num = 100
        console.log(num) // 100
    }
    console.log(num) // 报错
    

标签:const,log,下中,num,let,var,100
From: https://www.cnblogs.com/waterrec/p/16850345.html

相关文章

  • <六>理解C++ new delete
    new和malloc区别?delete和free区别?malloc和free是C语言的库函数new和delete叫做运算符malloc是否开辟成功是通过返回值和空指针比对判断.和new开辟失败会抛出异常.bad_......
  • 详解var、let与const
    一、var关键字的特性1.变量作用域在引入ES6的let和const关键字之前,使用var关键字声明的变量只有全局作用域和函数作用域,是没有块级作用域的。这意味着,变量在声......
  • const_cast与用法总结
    去掉const属性。(仅针对于指针和引用)   ......
  • c++从入门到精通——const分配内存模型
    const分配内存模型对const变量取地址,分配临时内存#define_CRT_SECURE_NO_WARNINGS#include<iostream>usingnamespacestd;voidtest(){constinta=10;int*p=(i......
  • C++从入门到精通——new和delete使用
    malloc与new区别malloc与free属于库函数new和delete属于运算符malloc不会调用构造函数new会调用构造函数malloc返回void*,c++之下需要进行强制转换,new返回创建对......
  • undo日志insert,update,delete (1)—mysql进阶(六十四)
    前面说了redo日志为了保证系统宕机的情况下,能够恢复数据,恢复数据是在以checkpoint_lsn为起始位子来恢复,在该值之前的都是已经持久化到磁盘的,可以为了提升效率而放弃,而之后的......
  • MySQL中Delete和Truncate区别
    一、清空表语句truncatetable[表名];deletefrom[表名]where…; 二、相同点两者都是删除表数据但不会删除表结构 三、不同点delete支持按条件删除,TRUNCA......
  • 406.queue-reconstruction-by-height 根据身高重建队列
    问题描述406.根据身高重建队列解题思路首先根据身高对数组重新排序,再根据ki进行插入操作。排序时,需要对排序的比较方法重写,参见C++sort排序函数用法。同时,考虑到基于......
  • 更改Android Studio默认ConstraintLayout布局
    看到网上很多人说改安装路径下的simple.xml.ftl里面的内容即可,可自己4.2.1版本并不存在AndroidStudio\plugins\android\lib\templates\activities\common\root\res\layou......
  • Filter|HttpServletRequestWrapper
    1.Filterpackagecom.jinruaneducate.module.filter;importorg.apache.commons.codec.binary.Base64;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importja......