ES6浅谈--const,数组解构

关于const:

1.const声明的基本类型的值不可重复声明,不可修改,声明之后需要初始化,声明存在暂时性死区,只在声明的块级作用域内有效。

2.const本质上确保的是变量的内存地址的数值不会被改动,所以对于基本类型的值来说,数值在栈中保存,不会被修改;但是对于对象来说,const声明的对象不可以被改变的是内存地址,数据存在堆中,是可以被修改的,如果想不被修改需要freeze。

3.冻结对象后不能新添加属性,但是还可以修改原有属性,所以需要彻底冻结所有属性。

4.浏览器环境下顶层对象和全局对象都是指window对象,使用let,const等es6声明的全局变量或对象不再是属于顶层对象中的属性。

关于数组解构:

1.解构length左边>右边,多余的值为undefined,右边>左边,无影响。

2.解构可以使用默认值,省略值,解构右边必须可以遍历。默认值只有当右边严格等于undefined才生效,如var [a=1,b=2] = [3],此时b=2,因为省略情况也是相当于初始为undefined。null不严格等于(===)undefined,但是==,所以右边有null还是会等于null。

3.默认值为函数时是惰性求值,只有当需要求的时候才调用函数,如果右边有值就不调用。设置默认值可以是之前声明的变量,但是不可以是未被声明的变量,如x=y,y=1,这时x需要y的值,但是y还未被声明。

关于对象解构:

1.对象解构同名直接用,因为es6同名可以省略名值对成单独的名,不同名仍需要写全。注意模式和变量的区别,变量才有意义,模式只是去找到变量的途径,不会被赋值。

2.对象解构可以取得继承的值,如obj1是obj2的原型,那么let {obj1的属性} = obj2(obj2甚至可以是空对象),最后都能获取以obj1的属性为标识符的值。

let {foo:{bar:rr}} = {bar:‘baz‘}
    console.log(rr)

3.如上代码,如果未声明foo这个父对象,然后直接去取其子对象bar,那么就会报错,但是如果声明了就没有问题(后面替换为{foo:{bar:‘baz‘}})

今天就到这里

原文地址:https://www.cnblogs.com/harrywu96/p/12097920.html

时间: 2024-10-25 19:52:48

ES6浅谈--const,数组解构的相关文章

ES6--JavaScript扩展知识点(let、const、解构)

一,ES2015(ES6)新增了两个声明变量的关键字:let.const let:只在代码块内{}有效,不可重复声明,不会提前初始化 1.只在代码块内有效 { let a = 1; var b = 2; } console.log(b); console.log(a);//输出a会报错 因为let声明只在代码块内有效 2.不可重复声明 let a = 1; let a = 2;//报错Uncaught SyntaxError: Identifier 'a' has already been de

ES6入门之变量的解构赋值(二)

前言 在上一章 ES6入门之let和const命令中我们对ES6的相关语法已经有了初步了解,上一章中我们主要学习了三大部分的内容,let命令的使用,块级作用域,const命令的使用,那么从本篇博客将进一步深入了解ES6中的相关语法,毕竟未来ES6是主流. 本章目标 学会数组的解构赋值 学会对象的解构赋值 学会字符串的解构赋值 学会数值和布尔值的解构赋值 学会函数参数的解构赋值 学会解构赋值的用途 本人对解构赋值的理解:模式匹配,匹配成功获取值,匹配不成功则为undefined,好比开心消消乐一样

数组解构

1,其实在ES6出现了之后,更新的很多,这些都是要去理解和学习的. 2,最近对于数组解构这个东西做了一个学习,觉得对于数据解构的有比较大的用处,所以po出来. 3,解构的分类有很多种类型:数组的解构赋值,对象的解构赋值,字符串的解构赋值,布尔值的解构赋值,函数参数的解构赋值,数值的解构赋值. 现在先来了解一下数组的解构赋值: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"&

ES6浅谈--解构,字符串扩展

解构: 1.大括号在句首会被认为是代码块,通过加圆括号可以解决问题,但是在声明语句中不能加圆括号,只有在赋值语句的非模式部分可以. 2.数值和布尔值解构会先转换成对象,然后用其包装对象的toString方法取得值再赋值. 3.解构用途:交换变量值:函数返回多个值取值:参数定义:提取json数据:参数默认值:遍历map:模块方法. 字符串扩展: 1.大括号增加unicode范围识别,另外支持for of遍历字符串. 2.模板字符串可以用于输入html文本,用${}做变量识别,反引号用反斜杠转义,t

JavaScript学习笔记 -- ES6学习(三) 变量的解构赋值

1.解构赋值的定义 在ES6中,允许按照一定模式,从数组和对象中提取值(所谓解构),然后对变量进行赋值. var a = 1; var b = 2; var c = 3; //等价于 var [a, b, c] = [1, 2, 3]; 如果解构不成功,对应的变量就会赋值undefined. let [x, y, ...z] = ['a']; x // "a" y // undefined z // [] 另一种情况是不完全解构,即等号左边的模式,只匹配一部分的等号右边的数组.这种情况

ES6笔记(3)-- 解构赋值

系列文章 -- ES6笔记系列 解构赋值,即对某种结构进行解析,然后将解析出来的值赋值给相关的变量,常见的有数组.对象.字符串的解构赋值等 一.数组的解构赋值 function ids() { return [1, 2, 3]; } var [id1, id2, id3] = ids(); console.log(id1, id2, id3); // 1 2 3 如上,解析返回的数组,取出值并赋给相应的变量,这就是解构赋值 1. 还可以嵌套多层,只要相应的模式匹配了就能解析出来 var [a,

ES6学习之变量的解构赋值

前言:什么是ES6?ECMAScript 6(简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.其中相比较于ES5新增了诸多的特性,并且ES6可转换为ES5的语法.->在线ES6转换为ES5工具. 本系列学习随笔参考了阮一峰老师的<ES6标准入门>. 一.解构赋值简述 在学习ES6之前,如果我们要从一个数组将值取出来,我们要如何去做? let arr=[1,2,3]; let a=arr[0]; let b=arr[1]; let c=arr[2]; 是

ES6新特性:利用解构赋值 (destructuring assignment), 简化代码

本文的Demo的运行环境为nodeJS, 参考:让nodeJS支持ES6的词法----babel的安装和使用 : 解构赋值是一种表达式, 利用这种新语法, 可以直接从数组或者对象中快速提取值 赋值给不同的变量, 利用这种写法的好处是减少了代码量, 一定程度优化了代码, 也有一点缺点就是阅读代码不再那么直观了. 解构赋值最简单的例子 <script> "use strict"; let [a,b,c] = [1,2,3]; console.log( a +"|&qu

ES6系列二 变量的解构赋值

一丶数组的解构赋值 1.完全解构 let [foo, bar] = [1, 2]; foo // 1 bar // 2 2.不完全解构,但是解构一样成功 let [foo, bar] = [1]; foo // 1 bar // undedefined 二丶对象的结构赋值 1.完全解构 let { foo, bar } = { foo: "aaa", bar: "bbb" }; foo // "aaa" bar // "bbb"