es6学习(一):变量声明的方式对比:var,let,const

前言

在let和const出现之前,js可以使用var为变量命令,如果是函数也可以用function命名,甚至你可以直接不用任何关键字命名

        var a = 1function fn() { }b = 2console.log(a)console.log(fn)console.log(b)

结果如下

var的特性

1.window环境下,var在最外层定义的变量会直接赋值给window

        var abc = '哈哈哈'console.log(window.abc,'var之后我在window上')

2.可以重复命名

        var abc = nullconsole.log(abc,'赋值为null')var abc = 111console.log(window.abc,'赋值数字')

3.会变量提升

        console.log(abc,'赋值之前')var abc = '初始化数据'console.log(abc,'赋值以后')

4.可以先声明再赋值

        var abcconsole.log(abc,'声明')abc = 'wjt'console.log(abc,'赋值')

 

5.可以使用单变量模式

        var a ,b ,ca = 1b = 2c = 3

let的特性

1.不会变量提升

        console.log(abc)let abc = 'wjt'

这句话的翻译是:初始化之前无法访问'abc'

2.不可以重复命名

        let abc = 1let abc = 2

这句话的翻译是:'abc'已被声明

3.可以先声明再赋值

        let abcconsole.log(abc,'声明')abc = 'wjt'console.log(abc,'赋值')

 

4.可以使用单变量模式 

         let a,b,cconsole.log(a,b,c,'单变量')

 

const的特性

1.不会变量提升

和let一样,这里不展示了

2.不可以重复命名

和let一样,这里不展示了

3.不可以修改值

基础类型
        const abc = 'wjt'abc = 'Wjt'console.log(abc)

 这句话的翻译是:对常量变量赋值。

引用类型
        const arr = [1,2,3]arr = [2,3,4]const obj = {name:'wjt'}obj = {name:'Wjt'}

但是,我们可以修改引用类型内部的属性,因为引用类型赋值的是一个内存地址,你修改地址值会报错,但是修改内存地址里的属性不会报错,如下

        const arr = [1,2,3]arr.push(4)const obj = {name:'wjt'}obj.name = 'Wjt'console.log(arr,obj)

 

4.不可以只声明不赋值

const abc

 

 这句话的翻译是:在const声明中缺少初始化式

5.不可以使用单变量模式

 面试

1.var let const的区别

var=>let和const

1.var有声明提升,而let和const没有

2.var在作用域内没有暂时性死区,let和const有

3.var可以对变量进行重复声明,let和const不行

4.window环境中,var在最外层定义的值会赋值给window,let和const不会

5.var没有块级作用域,let和const有块级作用域

var和let=>const

1.var和let声明的变量可以修改值,const一般声明常量,值不可以修改

2.var和let都可以先声明,再赋值,const不行

3.var和let都可以使用单变量模式,const不行

let=>const

let声明的是变量值,const声明的一般为常量值

2.经典循环中对比var和let

普通循环
        for(var a = 0;a<3;a++){console.log(a,'常规for循环var定义')}for(let b = 0;b<3;b++){console.log(b,'常规for循环let定义')}for(const c = 0;c<3;c++){console.log(c,'常规for循环const定义')}

var和let可以正常输出,变量值也可以被正常增加,const就不行,因为const是不可以修改的

循环加定时器
        for(var a = 0;a<3;a++){setTimeout(()=>{console.log(a,'循环定时器var定义')})}for(let b = 0;b<3;b++){setTimeout(()=>{console.log(b,'循环定时器let定义')})}

那是因为var没有块级作用域,循环是同步任务,循环执行完了才开始执行定时器,这个时候a早已经被改成3了,所以每次输出都是3

let有块级作用域,每次执行完毕,for内部的b都会被保存一份,所以每次循环完毕之后的值我们都能输出出来。

        for(var a = 0;a<3;a++){console.log(a,'我不在定时器内')setTimeout(()=>{console.log(a,'循环定时器var定义')})}

        for(let b = 0;b<3;b++){console.log(b,'我不在定时器内')setTimeout(()=>{console.log(b,'循环定时器let定义')})}

什么是块级作用域?答曰:大括号就代表一层块级作用域(这么描述不是特别准确,有些大括号就不是(比如对象的大括号),作用域内会说,这里不陈述)

3.js中声明变量的方式(7种)

1.啥关键也不用,例如直接a=1

2.var声明

3.let声明

4.const声明

5.function声明函数

6.class声明类

7.import声明,例如import data from './data.js'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/229865.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JVM从入门到实战】(八)垃圾回收(1)

内存泄漏&#xff1a;指的是不再使用的对象在系统中未被回收&#xff0c;内存泄漏的积累可能会导致内存溢出 什么是垃圾回收 Java中为了简化对象的释放&#xff0c;引入了自动的垃圾回收&#xff08;Garbage Collection简称GC&#xff09;机制。通过垃 圾回收器来对不再使用的…

力扣刷题-二叉树-平衡二叉树

110 平衡二叉树 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a;一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 返回 true 。 给定二叉树 [1…

音画欣赏|《红尘入戏》

《红尘入戏》 46X68cm 陈可之2023年绘 《秋月》 【宋】朱熹 清溪流过碧山头&#xff0c;空水澄鲜一色秋。 隔断红尘三十里&#xff0c;白云红叶两悠悠。 《白日偶无客青山长对门》其四 【宋】韩淲 人生等戏剧&#xff0c;衮衮徒区区。 老身其回头&#xff0c;今有古非无。 -…

Kafka相关知识

一、kafka架构 Kafka基础知识 Kafka是最初由Linkedin公司开发&#xff0c;是一个分布式、分区的、多副本的、多生产者、多订阅者&#xff0c;基于zookeeper协 调的分布式日志系统(也可以当做MQ系统)&#xff0c;常见可以用于webynginx日志、访问日志&#xff0c;消息服务等等&…

Arma3/武装突袭3东风战役最后一关游戏无法保存的解决办法

Arma3这个游戏玩进去还是非常有可玩性的&#xff0c;可是在玩过了它本体自带的东风系列战役后&#xff0c;在最精髓的最后一关——game over这个关卡&#xff0c;却有个非常头疼的问题。 逃跑其实是非常简单的&#xff0c;但是想要无伤环游全岛确十分困难&#xff0c;因为这关卡…

游戏运行中突然掉线是什么原因导致的

游戏平稳运行的原因只有一个&#xff0c;掉线的原因各有个的不同。这些不同的原因有常见&#xff0c;也有不常见的。但不管出于什么原因的掉线&#xff0c;带来的损失又是相同的。 首先最常见的原因就是攻击造成的 像CC&#xff0c;DDOS。CC会造成服务器资源的浪费&…

超详细教程:使用React实现动态轮播图

前言 轮播组件是常见的一种方式&#xff0c;用来展示图像、信息或者是广告。我们可以使用React来创建一个轮播组件&#xff0c;并且利用其中的State和effect Hook来创建一款动态的、可以自动播放的轮播组件。 效果 轮播组件会展示一个平铺的图片列表。在图片列表下方是一组小…

Missing artifact org.wltea.analyzer:ik-analyzer:jar:5.0

没有找到【org.wltea.analyzer】 找到了【org.wltea.ik-analyzer】 https://github.com/wks/ik-analyzer https://github.com/wks/ik-analyzer.git https://code.google.com/archive/p/ik-analyzer/downloads?page2 C:\Users\Administrator\Desktop\ik-analyzer-master>m…

【Hive_03】单行函数、聚合函数、窗口函数、自定义函数、炸裂函数

1、函数简介2、单行函数2.1 算术运算函数2.2 数值函数2.3 字符串函数&#xff08;1&#xff09;substring 截取字符串&#xff08;2&#xff09;replace 替换&#xff08;3&#xff09;regexp_replace 正则替换&#xff08;4&#xff09;regexp 正则匹配&#xff08;5&#xff…

机器学习---模型评估

1、混淆矩阵 对以上混淆矩阵的解释&#xff1a; P&#xff1a;样本数据中的正例数。 N&#xff1a;样本数据中的负例数。 Y&#xff1a;通过模型预测出来的正例数。 N&#xff1a;通过模型预测出来的负例数。 True Positives:真阳性&#xff0c;表示实际是正样本预测成正样…

自然语言处理阅读第二弹

HuggingFace 镜像网站模型库 NLP中的自回归模型和自编码模型 自回归&#xff1a;根据上文内容预测下一个可能的单词&#xff0c;或者根据下文预测上一个可能的单词。只能利用上文或者下文的信息&#xff0c;不能同时利用上文和下文的信息。自编码&#xff1a;对输入的句子随…

7.26 SpringBoot项目实战【还书】

文章目录 前言一、编写控制器二、编写服务层三、Git提交前言 本文是项目实战 业务接口 的最后一篇,上文 曾说过【还书】的 入口是【我的借阅记录】,因为【还书】是基于一次借阅记录而言,另外在4.2 数据库设计 曾分析过【还书】的业务场景,需要执行两步操作: 更新【借阅记…

后端低代码平台探索总结

业务需求快速变化的背景 我们在对业务需求进行梳理后&#xff0c;在进行程序设计时&#xff0c;对于将来可能发生变化的常量、变量、阀值、开关、条件、公式等等&#xff0c;可能会配置在环境变量或数字字典来支持可配置。但是需求变化往往会更加复杂、更加不可预测&#xff0…

C# 命令行参数解析库示例

写在前面 在日常开发中&#xff0c;我们经常会用到命令行参数&#xff0c;比如cmd下的各种指令&#xff1b;还有C#的控制台类型的项目&#xff0c;在默认入口Main函数中&#xff0c;那个args参数&#xff0c;就是有系统传入到程序进程的命令行参数&#xff1b;在传入的参数相对…

STM32/STM8资源节约主义设计方式

STM32/STM8资源节约主义设计方式 在小资源芯片进行代码设计时&#xff0c;如STM32C0系列&#xff0c;STM8系列&#xff0c;因为官方库本身要包含各种场景应用特征的支持&#xff0c;所以会有一些冗余的代码占用更多FLASH空间。当需要实现资源占用最简化设计方式时&#xff0c;…

Docker实战案例研究:深入行业应用与最佳实践

Docker作为一种轻量级、可移植、可扩展的容器化技术&#xff0c;在各行各业都得到了广泛应用。本文将通过深入实际案例&#xff0c;介绍Docker在不同行业的应用以及相应的最佳实践&#xff0c;提供更加丰富的示例代码&#xff0c;以帮助大家更全面地理解和运用Docker的强大功能…

怎样长时间保持SSH会话连接不断开?

操作场景 使用SSH方式登录CentOS Stream操作系统的云服务器时&#xff0c;过一段时间就会自动断开连接。 该文档适用于CentOS/EulerOS系统。 操作方法 编辑/etc/ssh/sshd_config文件设置心跳&#xff0c;保持连接。 编辑/etc/ssh/sshd_config&#xff0c;添加配置项&#x…

数据分析为何要学统计学(10)——如何进行比率检验

比率检验是通过样本推测某种事件的总体占比水平。要求事件仅有互斥的两种情况&#xff0c;即&#xff0c;概率分别为p与1-p。 比率检验分单样本和双样本两种情况&#xff0c;以下我们分别介绍。 1. 单样本比率检验 形如这样的问题&#xff1a;“小学生近视比例日益提高&#…

【BIG_FG_CSDN】*VMware17pro*Linux*Redhit6网络管理(个人向——学习笔记)

物理机中的网络 查看物理网络的方法 “网络连接”—>单点选中网络的选项-->菜单栏中“查看此连接状态”-->“详细信息” “网络连接”中的VM网卡 在主机上对应的有VMware Network Adapter VMnet1和VMware Network Adapter VMnet8两块虚拟网卡&#xff0c;它们分别…

【MySQL】MySQL表的操作-创建查看删除和修改

文章目录 1.创建表2.查看表结构3.修改表4.删除表 1.创建表 语法&#xff1a; CREATE TABLE table_name (field1 datatype,field2 datatype,field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;说明&#xff1a; field 表示列名datatype 表示列的类型…