前端项目中常用es6知识总结 -- let、const及数据类型延伸
项目开发中一些常用的es6知识,主要是为以后分享小程序开发、node+koa项目开发以及vueSSR(vue服务端渲染)做个前置铺垫。
项目开发常用es6介绍
1、块级作用域 let const
2、箭头函数及this指向
3、promise、
- 4、async await语法
4、模块化 module export和import
5、解构赋值、字符串模板
……
let const
es6新增了let和const命令,用法类似于var。对于三者的异同见下表格:
| 声明 | 重复声明 | 变量提升 | |
|---|---|---|---|
| var | 变量 | 可以 | 存在 |
| let | 变量 | 不可以 | 不存在 |
| const | 常量 | 不可以 | 不存在 |
对于var不过多解释,let用于声明变量const用于声明常量。常量即是不可改变的量,一旦声明,常量的值就不能改变。所以使用const,就必须立即初始化,不能留到以后赋值(当然如果只声明不赋值的话浏览器也会报错)。
let和const在相同的作用域内是不能重复声明的,如下示例:
// 报错,重复声明
function func() {
let a = 10;
let a = 1;
} function func(arg) {
let arg; // 报错,函数传参实际上也是定义了一个变量arg
{
let arg; // 不报错,因为函数参数和let声明的变量不在同一个作用域(代码块)内
let aaa;
}
console.log(aaa) // aaa is not defined
}
//第二个示例说明了let声明的变量只在它所在的代码块有效,const同样如此
var命令会发生”变量提升“现象,即变量可以在声明之前使用。而let和const所声明的变量常量一定要在声明后使用,否则报错。
// var 的情况
console.log(foo); // 输出undefined
var foo = 2;
// let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2;
//const同样如此
块级作用域
块级作用域即是将代码写在{}里,是一个语句且没有返回值。
function f1() {
let n = 5;
if (true) {
let n = 10;
}
console.log(n); //
}
//如果将let都改成var会打印10,这表示es6块级作用域外层代码块不受内层代码块的影响
补充
const实际上保证的并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。如果不太明白这句话的具体意思就一起来补一补js的基础知识了:数据类型。
这里就做个简要介绍,大神可以略过。
js数据类型可以分类基本数据类型(Number、String 、Boolean、Null和Undefined)和引用数据类型(Object 、Array)。
当我们定义一个变量的时候,系统会给这个变量分配一块内存。如果该变量是基本数据类型那么定义的数据就会保存在该内存中。但是!!注意这个但是!!!如果该变量是引用数据类型,那么该内存中保存的就不是定义的数据了,而是一个指针,这个指针指向另一个地址,数据就保存在这个指针所指向的地址里。
所以,对于引用类型数据而言,const只能保证内存中存放的指针不发生变化,不关心这个指针指向的地址里面的数据有没有变化。
const a = 1;
const a = 2; // 报错
const arr = [1, 2, 3];
arr[0] = 9;
arr // [9,2,3]
基本数据类型和引用数据类型区别的代码示例:
const a = 1;
const b = 1;
a == b // true 基本数据类型只做值的比较
//---------------------------
const arr1 = [1, 2, 3];
const arr2 = [1, 2, 3];
arr1 == arr2 //false 虽然值是一样的,但是在定义的时候分配的内存中的指针不一样,引用型数据不仅比较值也会比较指针,指针即地址
//---------------------------
const arr3 = [1, 2, 3];
let arr4;
arr4 = arr3;
arr4[0] = 999;
arr3 //[999,2,3] 赋值的时候将arr3的指针和值都赋给了arr4,所以arr3和arr4共用一个指针,指向同一个地址,所以……
欢迎扫描下方二维码关注,这里更多前端技术分享,让我们一起成长 -- web前端周刊

前端项目中常用es6知识总结 -- let、const及数据类型延伸的更多相关文章
- 前端项目中常用es6知识总结 -- 箭头函数及this指向、尾调用优化
项目开发中一些常用的es6知识,主要是为以后分享小程序开发.node+koa项目开发以及vueSSR(vue服务端渲染)做个前置铺垫. 项目开发常用es6介绍 1.块级作用域 let const 2. ...
- 前端项目中常用es6知识总结 -- Async、Await让异步美如画
项目开发中一些常用的es6知识,主要是为以后分享小程序开发.node+koa项目开发以及vueSSR(vue服务端渲染)做个前置铺垫. 项目开发常用es6介绍 1.块级作用域 let const 2. ...
- 前端项目中常用es6知识总结 -- Promise逃脱回调地狱
项目开发中一些常用的es6知识,主要是为以后分享小程序开发.node+koa项目开发以及vueSSR(vue服务端渲染)做个前置铺垫. 项目开发常用es6介绍 1.块级作用域 let const 2. ...
- ES6系列之项目中常用的新特性
ES6系列之项目中常用的新特性 ES6常用特性 平时项目开发中灵活运用ES6+语法可以让开发者减少很多开发时间,提高工作效率.ES6版本提供了很多新的特性,接下来我列举项目中常用的ES6+的特性: l ...
- 在Vue&Element前端项目中,对于字典列表的显示处理
在很多项目开发中,我们为了使用方便,一般都会封装一些自定义组件来简化界面的显示处理,例如参照字典的下拉列表显示,是我们项目中经常用到的功能之一,本篇随笔介绍在Vue&Element前端项目中如 ...
- Android 项目中常用到的第三方组件
项目中常用到的第三方组件 1 社会化分享ShareSDK-Core-2.5.9.jarShareSDK-QQ-2.5.9.jarShareSDK-QZone-2.5.9.jarShareSDK-Sin ...
- 项目中常用js方法整理common.js
抽空把项目中常用js方法整理成了common.js,都是网上搜集而来的,大家一起分享吧. var h = {}; h.get = function (url, data, ok, error) { $ ...
- 记录下项目中常用到的JavaScript/JQuery代码二(大量实例)
记录下项目中常用到的JavaScript/JQuery代码一(大量实例) 1.input输入框监听变化 <input type="text" style="widt ...
- 项目中常用的MySQL 优化
本文我们来谈谈项目中常用的MySQL优化方法,共19条,具体如下: 一.EXPLAIN 做MySQL优化,我们要善用EXPLAIN查看SQL执行计划. 下面来个简单的示例,标注(1.2.3.4.5)我 ...
随机推荐
- HDU 4183Pahom on Water(网络流之最大流)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4183 这题题目意思非常难看懂..我看了好长时间也没看懂..终于是从网上找的翻译. .我就在这翻译一下吧 ...
- oc数据类型分类
OC数据类型能够分为 基本类型.构造类型.指针类型.空类型 基本类型可分为 整型.字符型.枚举型.浮点型(float类型.double类型) 构造类型可分为 数组类型.结构体类型.公用体类型 指针类型 ...
- 英语影视台词---三、Cinema Paradiso
英语影视台词---三.Cinema Paradiso 一.总结 一句话总结:天堂电影院 1.Alfredo: No, Toto. Nobody said it. This time it's all ...
- quartz 持久化 数据库表
此处只包括配置数据库操作 quartz 持久化数据库表格字段解释建表,SQL语句在dbTables文件夹中可以找到,介绍下我们开发主要使用到的表: (版本不一样,可能数据库表也不一样,这里使用2.2. ...
- request获取各种路径总结、页面跳转总结。
页面跳转总结 JSP中response.sendRedirect()与request.getRequestDispatcher().forward(request,response)这两个对象都可以使 ...
- nuxt 关闭ESlint 语法检测
学习nuxt中在自己编写search组件的时候出现了各种类似于Expected indentation of 0 spaces but found 4的问题 上网搜是因为ESlint语法检测产生的问题 ...
- webstorm配置less解析的方法
1.安装node.js 2.npm 安装less, npm install -g less 2.1 lessc style.less styles.css 编译 2.2 lessc –clean-cs ...
- linux安装lrzsz支持rz从windows上传文件到linux
1.下载lrzsz wget https://wangxuejin-data-1252194948.cos.ap-shanghai.myqcloud.com/lrzsz-0.12.20.tar.gz ...
- SimpleDateFormat 时间格式化
- 使用Linux遇到的一些问题和解决方案
1.如何在重装系统或换机器以后继续使用以前用过的thunderbird邮件 执行命令thunderbird -ProfileManager以后会打开一个配置用户界面. 在里面添加一个新的配置,然后选择 ...