ES6 中的let、const与var的区别

2023-11-10

首先需要明确的是let、const、var都是用来定义变量的 
在ES6之前,我们一般都用var来定义变量,例如 :

function test(){
    var i=1;
    console.log(i);
    console.log(j);
    var j=2;
}
test();
console.log(i);
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在上面的代码中,我们可以预计到第一个console输出的是1,第二个由于变量提升输出的是undefine,而不是产生ReferenceError错误,第三个输出的还是1;也就是说在函数中定义的一个变量,在函数外部仍然是可以使用的,那么我们再来看看这一段代码:

function test(){
    let i=1;
    console.log(i);
    console.log(j);
    let j=2;
}
test();
console.log(i);
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

执行完后,我们会发现第一个console仍然输出了1,第二个和第三个产生了ReferenceError错误!对比之下我们会发现let的作用域比var更加严格了,有点类似于Java中的变量定义,1、必须先定义再使用,2、有着严格的作用域,变量只作用域当前隶属的代码块

在新的ES6标准中let完全可以替代var,在ES6中另外一个定义变量的关键字是 const,const 代表一个值的 常量索引 ,也就是说,变量名字在内存中的指针不能够改变,但是指向这个变量的值 可能 改变。例如:

const names=[] ;
names.push(“1”) ;
console.log (names) ;
   
   
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

我们创建了一个拥有常量索引的数组变量,然后添加值到这个数组中,但是并不改变它的索引,所以上面的代码完全可以运行。 
但是当我们想修改索引到一个新的数组中,就会产生一个错误TypeError:

//数组
const names = [ ] ;
names=[];//Uncaught TypeError: Assignment to constant variable.
//number或String
const i=1;
i=2;//Uncaught TypeError: Assignment to constant variable.
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ES6 中的let、const与var的区别 的相关文章

  • NVIDIA GPU 算力表

    来自nvidia官方 https developer nvidia com cuda gpus
  • 线程同步

    线程同步 作者 buaawhl 我们可以在计算机上运行各种计算机软件程序 每一个运行的程序可能包括多个独立运行的线程 Thread 线程 Thread 是一份独立运行的程序 有自己专用的运行栈 线程有可能和其他线程共享一些资源 比如 内存
  • Selenium系列教程 - 文件上传

    主要内容 一 通过send keys方法 该方法只适用于input标签 二 通过AutoIt来处理上传文件 适用所有 三 其他方法 四 多文件上传 在Web UI自动化测试中可能会遇到文件上传的场景 针对该场景我们要区分上传按钮的种类 大体
  • 第四周作业

    实验作业 1 完成课本每一个编程题 要求先画出流程算法图或N S图 然后编程实现 有可能的话使用两种以上方法 2 编程求 百钱百鸡 问题 鸡翁一值钱五 鸡母 一值钱三 鸡雏三值钱一 百钱买百鸡 问鸡翁 鸡母 鸡雏各几何 3 编程输入一个整数
  • centos7下boot空间不足解决办法

    root localhost admin rpm qa grep kernel 看下有哪些 然后用yum remove kernel devel 3 10 0 327 el7 x86 64 删除
  • 创建Numpy数组(zeros()、ones()、empty()、arange())

    创建Numpy数组 zeros 创建出来的数组里边的元素都是0 例如 data01 np zeros 3 4 print data01 ones 创建出来的数组里边的元素都是1 例如 data02 np ones 3 4 print dat
  • 前端通过spark-md5.js计算本地文件md5

    背景 说到本人第一次使用spark md5 js还是差不多一年以前的时候了 当时后台老大说要搞一个文件分片上传的功能 我当时就心想 what 啥是文件分片上传 完全没听过好吗 至于我当时内心那个慌就不多描述了 总之文件分片上传需要一个识别文
  • Leetcode--Java--377. 组合总和 Ⅳ

    题目描述 给你一个由 不同 整数组成的数组 nums 和一个目标整数 target 请你从 nums 中找出并返回总和为 target 的元素组合的个数 题目数据保证答案符合 32 位整数范围 样例描述 示例 1 输入 nums 1 2 3
  • LeetCode(Python)—— 两数之和(简单)

    两数之和 概述 给定一个整数数组 nums 和一个整数目标值 target 请你在该数组中找出和为目标值 target 的那两个整数 并返回它们的数组下标 你可以假设每种输入只会对应一个答案 但是 数组中同一个元素在答案里不能重复出现 你可
  • 在广告宣传领域,PS透明屏有哪些优点表现?

    PS透明屏是一种新型的显示技术 它将传统的显示屏幕与透明材料相结合 使得屏幕能够同时显示图像和透过屏幕看到背后的物体 这种技术在商业展示 广告宣传 产品展示等领域有着广泛的应用前景 PS透明屏的工作原理是利用透明材料的特性 通过控制屏幕上的
  • C程序在内存中的布局与常见的漏洞

    1 C程序员通用的漏洞指南 C语言中大多数漏洞都与缓冲区溢出和字符串操作相关 在大多数情况下 都会导致段错误 segmentation fault 但仅过精心设计的输入值 但是 根据体系结构和环境特别设计的恶意输入值可能会导致任意代码的执行
  • UDP/TCP 通信中 server端ip为0的问题

    在UDP或TCP通信中 客户端也可以不需要bind自身IP和端口号 而服务器需要bind自身IP地址和端口号 看代码时候发现在UDP TCP通信中 server端本地信息初始化时ip设置为0了 如上图两个部分代码所示 查了一些资料 INAD
  • [Go版]算法通关村第二关青铜——终于学会链表反转了

    目录 题目 反转链表 解决方法 方法1 借助虚拟头节点反转 方法2 不借助虚拟头节点 仅靠自身反转 方法3 利用递归来反转 题目 反转链表 题目链接 LeetCode 206 反转链表 解决方法 源码地址 GitHub golang版本 方
  • CentOS7.5 搭建ElasticSearch6.4.2 + Kibana6.4.2 环境

    本文目录 1 创建用户 2 授权sudo 3 下载ElasticSearch Kibana 3 1 创建目录 3 2 下载文件 4 配置Elasticsearch 5 配置Kibana 参考资料 看下CentOS版本 root test h
  • 面向对象编程的三大特性详解

    封装 多态和继承是面向对象编程的三大特性 封装 Encapsulation 封装的目的是为了保证变量的安全性 使用者不必在意具体实现细节 而只是通过外部接口即可访问类的成员 如果不进行封装 类中的实例变量可以直接查看和修改 可能给整个代码带
  • latex公式实现居中,多行公式同一个编号

    1 多行居中 gather虽然会居中 内部一般多行公式会分为两个编号 p1 1 1 p2 2 2 可以用split实现伪居中 split的本质是将 后面的公式符号进行对齐 且split环境中可以用 表示换行 begin equation l
  • CMake命令行添加编译参数

    CMake命令行添加编译参数 学习自 coroserver 例程 https github com windoze coroserver coroserver 是一个应用 Boost Asio 和 Boost Coroutine 的 多线程
  • React 官方例子tic-tac-toe完整功能

    官方例子 https reactjs org tutorial tutorial html 完整功能 https github com Mangon ReactStarter
  • redis 十一. IO 多路复用

    目录 一 基础 select poll epoll 二 redis 与多路复用 一 基础 首先知道一下五种io模型有个概念 Blocking IO 阻塞IO NoneBlockin IO 非阻塞IO IO multiplexing redi
  • 深入详解ThreadLocal内存泄漏问题

    1 造成内存泄漏的原因 threadLocal是为了解决对象不能被多线程共享访问的问题 通过threadLocal set方法将对象实例保存在每个线程自己所拥有的threadLocalMap中 这样每个线程使用自己的对象实例 彼此不会影响达

随机推荐

  • 大学毕业后,我就去当了2个月外卖骑手,哭了一整晚

    先简单介绍一下自己 我来自长沙 大学学的的物流管理专业 现在就职于一家互联网公司 从事软件测试工作 我来自长沙县的一个偏远农村 家里兄弟姐妹多 父母无力负担我的学费 很多时候学费都是靠姐姐姐夫接济 我大学也做过很多兼职家教 所以可以支撑我到
  • LaTex中公式太长怎么办(公式跨栏显示)

    目录 问题 方案 1 缩小公式字体 2 公式内容换行 3 公式跨栏居中显示 这些方法我摸索了一个早上才找到的 如果对大家有帮助 请大家给我一键三连 非常感谢 问题 在双列栏中 有一道公式长度实在太长 左思右想 发现无非几种解决办法 方案 1
  • Linux 查看/关闭/禁止开机启动防火墙命令

    1 查看防火墙 firewall 的状态 firewall cmd state 或者 systemctl status firewalld 2 停止防火墙 firewall systemctl stop firewalld service
  • 转换wxDateTime为Python

    wxPython Converting wx DateTime to Python datetime The wxPython GUI toolkit includes its own date time capabilities Most
  • 网安基础知识—【IP地址】

    文章目录 一 什么是IP地址 二 IP地址的分类 三 子网掩码 一 什么是IP地址 IP地址就像我们需要打电话时的电话号码一样 它用来标识网络中的一台主机 每台主机至少有一个IP地址 而且这个IP地址是全网唯一的 IP地址由网路号和主机号两
  • 'Invalid parameter not satisfying: URLString'网络请求的时候get使用特殊字符和汉字崩溃的恶心bug解决方法...

    参数需要转一下的就ok value value stringByAddingPercentEscapesUsingEncoding NSUTF8StringEncoding 转载于 https www cnblogs com godlove
  • 易懂分布式

    转载自 https www jianshu com p f2c31e632f1d 近年来 区块链技术 部分人更愿意称之为分布式账本技术 的走红将分布式技术的概念带入大众的视野 区块链技术之所以备受追捧 一方面是其展现了一种在计算机的辅助下
  • 手机连云服务器传文件,手机云服务器传输文件

    手机云服务器传输文件 内容精选 换一换 本节操作介绍本地Linux操作系统主机通过SCP向Linux云服务器传输文件的操作步骤 登录管理控制台 在ECS列表页面记录待上传文件的云服务器的弹性公网IP 上传文件在本地Linux操作系统主机上执
  • java操作es集群模糊查询等

    首先引入依赖
  • Groovy简介和一点资源

    Groovy简介 简单地说 Groovy是一门基于JVM的动态语言 我们可以把它当成JVM上的Python语言来使用 而且Groovy的有些语法都和Python Ruby等脚本语言很相似 Groovy最后也会被编译为Java字节码 在JVM
  • 【java】之3种方式实现Object和Map之间的转换

    转载 java 之3种方式实现Object和Map之间的转换 古越剑箫 博客园
  • 我的postfix+postfixadmin邮件服务器架设过程

    Step1 安装apache mysql php 配置dns 如果mysql为自定义安装 请做以下操作 PATH PATH usr local mysql bin export PATH echo usr local mysql lib m
  • HTML5新控件 - url类型输入框(网址)

    如果需要一个用来填写url地址的输入框 可以使用url类型 这样浏览器可以帮我们验证格式是否正确 而不需要自己写验证规则 网址验证规则 首先要有一个URL前缀 http ftp 等 后面可以是空格和大多数特殊字符 冒号除外
  • Theano学习系列(3):符号变量的方法之creat new tensor

    Theano学习系列 3 符号变量的方法之Creat New Tensor 和前两节一样 本节重点讲述tensor方法中的creat new tensor这些知识 这一节共有11个函数需要我们去学习掌握 由于有的函数区别很小 这里只介绍一部
  • AD 画PCB布线时,走线网线高亮,其它不走线网络变黑的设置方法

    正常布线时显示效果 布线时所有PCB显示都正常 设置不走线网格变黑的方法 2 1 T P调出配置项 tools Preferences PCB Editor Display中Highlighting Options 然后勾选apply ma
  • 通过Pyecharts和Matplotlib对数据中的性别信息进行可视化

    前言 在进行描述性数据分析时会遇到需要进行分类统计的数据 例如性别 所在地区等等 本篇文章用数据中的性别信息为例并通过Pyecharts和Matplotlib对其进行可视化 1 导入数据 import pandas as pd import
  • 熵、联合熵、条件熵

    1 单变量的熵 离散型随机变量的熵 熵是一个随机变量不确定性的度量 一个随机变量的熵越大 意味着不确定性越大 换言之 该随机变量包含的信息量越大 必然事件是确定无疑的 并不含有不确定性 所以必然事件的熵应该是0 也就是说 必然事件不含有信息
  • MIPI(D-PHY)协议简介&测量方法&测试项简介

    作者 AirCity 2020 2 20 Aircity007 sina com 本文所有权归作者Aircity所有 1 MIPI Alliance 说起MIPI 就得说下这个MIPI Alliance 这个联盟聚集了很多知名IC大厂 手机
  • Kubernetes[k8s] 最新版1.27.3安装教程,使用containerd模式

    背景 公司使用的是交老的k8s版本 1 16 由于老版本的K8s对于现在很多新特性不支持 所以需要升级到新版本 目前2023年7月11日最新版本的k8s是v1 27 3 通过参考官方文档进行k8s部署工作 其中涉及到操作系统配置 防火墙配置
  • ES6 中的let、const与var的区别

    首先需要明确的是let const var都是用来定义变量的 在ES6之前 我们一般都用var来定义变量 例如 function test var i 1 console log i console log j var j 2 test c