ES6-----6种变量

简介: ES6-----6种变量

这一个系列是ES6的全解析,不一定是完全的目录,希望记录一些自己的理解

ES5一共有两种变量的声明方法,即var和function;到了ES6这里,除了增加的常用的let和const之外,还添加了import和class命令。我们逐一来看:

var
这个想必大家都很清楚,也用的很多。var 是存在var变量不存在块级作用域,是函数作用域;可以多次重复声明同一变量,而且有变量提升的效果。

let
let 是ES6中新增的一种变量命名方式,其作用域也是ES6中特色的块级作用域,某种程度上来说,ES6相当于严格模式中的var,因此不存在变量提升的问题,例如在for循环中,就很适合let声明临时变量。let还有一个特性就是暂时性死区,当存在全局变量的时候,再去块级作用域中用let声明一个相同的变量就会存在暂时性死区。

const
const多用于声明只读的常量,且声明过后,常量的值不能改变;与let一样,只在块级作用域中生效,同样不存在变量提升;同样存在暂时性死区,且不可重复声明同一变量。慎用const声明对象

import
import同样也是ES6中新增的一种方式,不同的是用来处理模块化的函数以及对象,其本质是实现按需加载的思想。静态的import导入与另一个模块的导出绑定,导入的模块运行在严格模式下,且可以向后兼容。这对于项目的模块化,为整体代码缩水有很大的用处。import可以接收一个对象,用对象表示;具有变量提升的效果。

class
按照js中万物皆对象的思想,是不应该有类的这个东西的。但ES6为了更接近传统语言的写法,引入例如类(class)这个概念。class这个其实还是旧瓶装新酒,是为了让整体看起来更像面向对象的写法。有一点注意的是类的内部所定义的所有方法是不可枚举的,可以通过getter和setter访问属性。类不存在变量提升,在内部都是默认的严格模式,但是存在继承。后续会说,这里不多说

function
function声明主要是对函数的管理;在ES6中,声明函数时可以使用默认参数,声明后的默认参数不能用let、const进行二次声明。同样是不能有同名参数,不具有传值的功效;设置完默认参数就会形成函数作用域;这些都是常用的特性,ES6中引入了rest参数(形式为“...变量名”),用于获取函数的其余参数,与其搭配的通常是数组;第二个新特性是扩展运算符(spread)是三个点(...)。这相当于rest参数的逆运算,将一个数组转为用逗号分隔的参数序列,该运算符主要用于函数调用。第三个是判断函数的调用,第四个是比较常用的箭头函数。

最后总结一下,粗略的划分可以如下:let与var主要是针对变量作用,const多服务于常量,import则针对模块化处理,class侧重于伪类的抽象,function则坚守对函数的处理,按照js中万物皆对象,凡是皆可函数的思想,基本上相对于ES5来说,ES6对变量命名的方式做了进一步的细化,可能ES7还会进一步抽象,这里先不表,待看了ES7再回来说

相关文章
|
Java 数据库连接 编译器
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
257 0
|
Java 调度 数据库
Java并发编程:深入理解线程池
在Java并发编程的海洋中,线程池是一艘强大的船,它不仅提高了性能,还简化了代码结构。本文将带你潜入线程池的深海,探索其核心组件、工作原理及如何高效利用线程池来优化你的并发应用。
|
10月前
|
人工智能 搜索推荐
基于 PAI-ArtLab 使用 ComfyUI 生成人像写真
本实验基于SDXL、InstantID技术,解决AI人像摄影中人物面部特征在风格迁移与图像放大后无法高度还原的问题。内置6种儿童风格提示词模板及提示词翻译模块,支持中文书写相关图像提示词测试个性化风格。需登录阿里云PAI ArtLab平台操作,领取免费试用资源后,通过ComfyUI(专享版)拉起服务并加载工作流,上传图片、选择草图、更换连线等步骤生成不同风格成果。还提供自定义风格模块和常见问题解答,方便用户解锁更多玩法。
|
消息中间件 Kafka 流计算
Flink(十一)【状态管理】(3)
Flink(十一)【状态管理】
|
C语言 C++
指针变量作为函数参数
指针变量作为函数参数
302 1
|
机器学习/深度学习 数据采集 人工智能
大模型开发:解释特征工程的重要性以及你如何进行特征选择。
特征工程对机器学习和深度学习至关重要,涉及数据清洗、转换和特征选择,以提升模型预测和泛化能力。它能提高数据质量、浓缩信息、优化模型性能及增强解释性。特征选择是关键步骤,包括过滤法、递归特征消除、嵌入式(如L1正则化)、包裹式和基于模型的方法。此过程通常迭代进行,结合多种工具和业务知识,并可通过自动化技术(如AutoML)简化。
1069 0
|
JavaScript 程序员
状态管理之Vuex (二) 异步管理
状态管理之Vuex (二) 异步管理
120 0
|
安全 CDN
三天完成企业官网ICP备案与公安备案-详细流程
三天完成企业官网ICP备案与公安备案-详细流程
629 0
三天完成企业官网ICP备案与公安备案-详细流程
|
存储 自然语言处理 机器人
AIGC工程系列-LLM编程框架LangChain初探
前话:最近基于LLM的AIGC应用涌现,大家都在探索如何快速利用LLM去构建自己业务领域的应用。我们早前做了LLM应用框架这方面的一些调研,发现有一款LLM开发框架Langchain在开源社区异常火爆,短短5个月的时间已经达2w+star。于是我们针对该框架做了系统性的调研梳理,并沉淀到了语雀文档,当时只是为了方便团队成员理解和快速做业务Demo。最近有很多同学搜到了这篇调研文档,频繁要求帮忙开下
3739 2
初始结构体
初始结构体
182 0