let和const与var的区别

2023-11-08

目录

一、定义

二、let

三、const

四、代码演示

四、循环中let和var声明的循环变量的区别

4.1  事件的绑定

4.2  循环变量存储的数据数值

4.2.1  var声明的循环变量

4.2.2  let声明的循环变量


一、定义

let和const是ES6新增的声明变量的关键词,之前声明变量的关键词是var。

二、let

  1. var定义的变量,可以预解析提前调用的结果是undefined,let定义的变量不能预解析,提前调用的结果是 报错。
  2. var定义的变量,变量名称可以重复,效果是重复赋值,let定义的变量不能重复,否则执行报错。
  3. var定义的变量作用域是全局/局部作用域。let定义的变量如果在{}中只能在{}中调用
  4. 在循环语句中var定义的循环变量和使用let定义的循环变量。执行原理和执行效果不同

三、const

  1.  var定义的变量,可以预解析提前调用的结果是undefined,const定义的变量不能预解析,提前调用的结果是 报错。
  2. var定义的变量,变量名称可以重复,效果是重复赋值,const定义的变量不能重复,否则执行报错。
  3. var定义的变量作用域是全局/局部作用域。const定义的变量如果在{}中只能在{}中调用
  4. const 定义的变量存储的数据数值不能改变,也就是const定义的变量,不能重复赋值

四、代码演示

(1)提前调用报错

        // 提前调用 预解析
        console.log( int1 );
        // // 提前调用 结果是报错
        console.log( int2 );


        // var 定义的变量 
        var int1 = 100 ;
        let int2 = 200 ;

(2)const与 let 定义的变量不能重复

        // var 定义的变量 
        var int1 = 100 ;
        let int2 = 200 ;

        // 变量名称重复 重复赋值效果
        var int1 = '北京' ;
        console.log( int1 );

        // 变量名称重复 结果是报错
        let int2 = '上海' ;

(3)const与 let定义的变量如果在{}中只能在{}中调用

        // 在 {} 中 使用 let 定义变量 只能在 { } 中 使用
        // 如果需要在 { } 中 对 let 定义的变量 进行操作 
        // 提前定义 变量 在 {} 中 进行赋值操作
        if( true ){
            var a = 300 ;
            let b = 400 ;
            // let 声明的变量 在 { } 中可以调用
            // 对 {} 外定义的变量 进行赋值操作
            console.log( b );
        }

        console.log( a ) ; 

        // let 声明的变量 在 { } 外 不能调用 
        console.log( b );

(4)const定义的变量不能重复赋值。 

        // const 定义的变量 不能重复赋值

        // const c = 100 ;
        // c = 200 ;
        // 结果是报错

        const arr = [1,2,3,4,5] ;
        // 只是修改引用数据类型中,数据单元存储的数据
        // 没有修改 arr变量中 存储的引用数据类型的内存地址
        arr[0] = '北京' ;
        console.log( arr );

运行结果: 

(1)提前调用报错

(2)const与 let 定义的变量不能重复

(3)const与 let定义的变量如果在{}中只能在{}中调用

(4)const定义的变量不能重复赋值。 

四、循环中let和var声明的循环变量的区别

4.1  事件的绑定

通过for循环给标签绑定事件,也就是一打开执行界面,事件绑定就结束了,也就是 循环已经结束了,也就是触发事件时循环已经结束了。

4.2  循环变量存储的数据数值

4.2.1  var声明的循环变量

在整个循环变量过程中只定义了一个循环变量i,每次循环都对这一个循环变量i进行重复赋值,也就是之后的循环变量数值会覆盖之前的循环变量数值,当循环结束后只有一个循环变量i,存储的是最终的循环变量数值。

4.2.2  let声明的循环变量

在整个循环过程中每次循环都相当于触发执行了一个{   },每一个{   }对于let定义的变量就是一个独立的作用域,也就是每次循环let声明的循环变量都是一个人独立作用域中的循环变量,每一次循环中循环变量都会存储不同的数据数值,互相之间不会影响,不会覆盖,也就是每次循环let声明的循环变量都相当于是一个独立的变量,不会覆盖之前的数据数值。

代码演示:

 <ul>
        <li>我是第一个li</li>
        <li>我是第二个li</li>
        <li>我是第三个li</li>
        <li>我是第四个li</li>
        <li>我是第五个li</li>
    </ul>

    <script>
        // 给 li 绑定事件 点击 li标签 弹出 索引下标

        // 获取标签对象
        const oLis = document.querySelectorAll('ul>li');

        // 通过 for循环 给 li标签 绑定事件
        for( var i = 0 ; i <= oLis.length -1 ; i++ ){
            // i 是 索引下标 oLis[i] 是 li标签对象
            oLis[i].addEventListener( 'click' , function(){
                
                // 点击时输出索引下标
                console.log( `我是var循环的i ${i}` );
            })
        }
        for( let j = 0 ; j <= oLis.length -1 ; j++ ){
            // i 是 索引下标 oLis[i] 是 li标签对象
            oLis[j].addEventListener( 'click' , function(){
                
                // 点击时输出索引下标
                console.log( `我是let循环的i ${j}` );
            })
        }

    </script>

运行结果:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

let和const与var的区别 的相关文章

随机推荐

  • 网络编程--TCP/IP协议(一)

    目录 前言 一丶网络基础 lt 1 gt 认识IP地址 1 gt 具体格式 2 gt 组成 3 gt 分类 4 gt 子网掩码 lt 2 gt 认识MAC地址 二丶网络设备及相关技术 lt 1 gt 物理层 集线器 lt 2 gt 数据链路
  • C++:实现计算贷款支付额问题

    计算月支付额的公式如下 月支付额 贷款总额 月利率 1 1 1 月利率 年数 12 include
  • win10使用腾讯会议软件没声音怎么解决

    购买了一个USB接口的带微麦网络摄像头 在win10电脑上打开腾讯会议软件进入会议后讲话始终没有声音输出 经尝试 排除麦克风和声卡音箱硬件和驱动的原因之后 Win10操作系统上腾讯会议麦克风能接收到输入但没有声音播出 一般会是麦克风设置和w
  • 什么是数据产品,如何设计一款好用的数据产品

    何为数据产品 从广义上讲 一切以数据作为驱动或者核心的都叫数据产品 例如数据报表平台 DMP 搜索与精准化产品 风控产品等等 从狭义上讲 就是公司的内部数据平台 今天和大家讨论的 主要是关于公司的内部数据平台的搭建 公司的内部数据平台 主要
  • 【满分】【华为OD机试真题2023B卷 JAVA&JS】计算最大乘积

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 计算最大乘积 知识点字符串位运算 时间限制 1s 空间限制 32MB 限定语言 不限 题目描述 给定一个元素类型为小写字符串的数组 请计算两个没有相同字符的元素 长度乘积的最大值 如果
  • GAN网络系列博客(一):用于人脸生成的StyleGAN结构

    目录 简介 基于风格的生成器 生成器的性质 总结 Reference 在未来的一段时间 我会开一个小专题 来介绍下GAN网络的一些经典论文 希望对那些想要入坑的同学提供一点点帮助 考虑到StyleGAN系列论文在相关领域的影响力 我们首先来
  • QT 多线程实现方式

    前因 当调用QApplication exec 时 就启动了QT的事件循环 在开始的时候QT会发出一些事件命令来显示和绘制窗口部件 在这之后 事件循环就开始运行 它不断检查是否有事件发生并且把这些事件发生给应用程序的QObject 当处理一
  • 微信小程序使用van-tabs组件,ios真机z-index层级错乱问题【已解决,ios自定义组件层级不穿透】

    一 这是模拟器上的效果 二 这是苹果11真机上的效果 安卓真机正常 三 先来理一下代码的层级现状 A 为van tabs B 是自定义组件 为数据列表 C为单个数据 D 也是自定义组件 图中省略 为单个数据详情弹窗 且D是B的子组件 在z
  • 题目0158-快递业务站

    快递业务站 题目描述 快递业务范围有 N 个站点 A 站点与 B 站点可以中转快递 则认为 A B 站可达 如果 A B 可达 B C 可达 则 A C 可达 现在给 N 个站点编号 0 1 n 1 用 s i j 表示 i j 是否可达
  • 信任的机制——区块链

    区块链是一个从顶向下实现的一项技术 是可以设计 可以编程的 区块链是一个信任的机器 是在完全不信任的节点之间建立信任机制的技术 是利用互联网传递价值的一种价值网络 这是一个把时间当朋友的技术 区块链在应用的过程中通过自身的设计 解决的问题
  • SAX解析xml

    第一步 创建xml
  • 【死磕 Java 基础】 — 你以为异常就是 try…catch ?那你天真了

    大家好 我是大明哥 个人网站 https www cmsblogs com 前言 我敢说对于很多小伙伴来说 他们以为在 Java 中异常就是 try catch 稍微有点儿意识的还会用下 throw new Exception 真的有这么简
  • osg的ref_ptr和observer_ptr

    ref ptr就是所谓的强指针类型 observer ptr是所谓的弱指针类型 需要注意的是他们都是类 而不是指针 只不过他们用于管理指针 1 如何实现自动内存管理 所谓自动内存管理就是只管对象或指针的创建和使用而不管销毁 实现自动内存管理
  • 关于ORACLE清理表空间总结

    1 查看索引和表的初始大小 SELECT bytes 1024 1024 M TABLE SIZE u FROM dba SEGMENTS U WHERE U owner IN CLEAR TRADE INTERFACE SECURITY
  • 【THOI 2012】 水位

    A1363 水位 思路题 做这道题的时候如果思路清晰的话 就是一道简单的乘法原理 高精度题 按照原始高度升序排序 最开始 所有点各自属于一个连通块 按照高度顺序 从最低的开始合并连通块 假设当前处理到 l r l r这个区间 他们的高度都是
  • Unity实现用WASD控制一个物体前后左右移动-小白课程01

    1 根据业务逻辑搭建场景 02 根据业务写代码 using System Collections using System Collections Generic using UnityEngine 实现让被挂在的物体往前移动 按下W键往前
  • git submodule的使用

    开发过程中 经常会有一些通用的部分希望抽取出来做成一个公共库来提供给别的工程来使用 而公共代码库的版本管理是个麻烦的事情 今天无意中发现了git的git submodule命令 之前的问题迎刃而解了 添加 为当前工程添加submodule
  • FasterRCNN详解

    FasterRCNN详解 1 2 2 FasterRCNN 1 模型 1 1 主干网络VGG16 or ResNet50 1 2 RPN生成建议框 1 3 RCNN进行分类和回归 2 预测 2 1 预测流程 3 训练 3 1 训练流程 3
  • 多目标跟踪:SORT和Deep SORT

    https zhuanlan zhihu com p 59148865 多目标跟踪 即Multiple Object Tracking MOT 主要任务中是给定一个图像序列 找到图像序列中运动的物体 并将不同帧的运动物体进行识别 也就是给定
  • let和const与var的区别

    目录 一 定义 二 let 三 const 四 代码演示 四 循环中let和var声明的循环变量的区别 4 1 事件的绑定 4 2 循环变量存储的数据数值 4 2 1 var声明的循环变量 4 2 2 let声明的循环变量 一 定义 let