// ES6允许按照一定模式 从数组和对象中提取值 对变量进行赋值 这就是解构let [a,b,c] = [1,2,3]//模式匹配let [foo,[[bar],baz]] = [1,[[2],3]]foo//1bar//2baz//3let [head,...tail] = [1,2,3,4];head//1tail//[2,3,4]let [x,y,...z] = ['a'];x//'a'y//undefined 说明解构不成功 值为undefindedz//[]// 不完全解构模式 即等号左边的模式 只匹配部分等号右边的数组 即不完全解构let [x,y] = [1,2,3]x//1y//2
// Set结构 也可使用数组的解构赋值
let[x,y,z] = new Set(['a','b','c'])
x//'a'
// 解构赋值允许指定默认指
let [foo = true] = []
foo//true
let [x,y = 'b'] = ['a']
x//'a'
y//'b'

  const [a,x,c,s,a] = 'hello';//字符串的解构赋值 是将字符串转换成类似数组的对象a//hx//ec//l// 类似数组的对象都有一个length属性 所以还可以对这个属性解构赋值

// const声明一个只读常量 一旦声明 常量的值便不能改变//因为const 声明变量不能改变 则必须一开始声明时就应该赋值  和var 不一样 否则会报错//const 作用域与let相同 只在 声明所在的块级作用域有效  声明的变量也不提升 同样存在暂时性死区//const 本质上保证的不是变量的值不得改动 而是变量指向的那个内存地址所保存的数据不得改动// 对于复合型数据 变量指向的内存地址 保存的只是一个指向实际数据的指针 const 只能保证// 这个指针是固定的(即总是固定指向一个地址)const foo = {}foo.prop = 123;console.log(foo.prop);// foo = {}//报错 因为常量foo储存的是一个地址  这个地址指向一个对象 不可变的是这个地址 即不能把这个地址指向// 指向另一个地址 但对象本身是可变的数据结构 所以可以添加属性
const a=[];
a.push('hello')
a.length = 0;
// a = ['dave']//报错 同上 改变了数组
console.log(a);
const fooo = Object.freeze({});//冻结对象
fooo.prop = 123; //严格模式下可能会报错 一般模式新添加属性不起作用// 将对象彻底冻结的函数
var constan = (obj) => {Object.freeze(obj);Object.keys(obj).forEach((key,i)=>{if(typeof obj[key] == 'object'){constan(obj[key])}})
}

// ES5只有两种声明变量的方法// 1.var 命令// 2.function命令// ES6声明变量的方法:// 1.var // 2.let // 3.const// 4.class// 5.function命令// 6.import命令//    顶层对象的属性
// 浏览器环境中 指window对象
// Node中指     global对象
//   ES6中 var function 声明的全局变量依旧属于顶层对象的属性  (为和ES5兼容)
// 但let const class 声明的全局变量不再属于顶层对象的属性// globalThis对象// 浏览器里 顶层对象是window self也指向顶层对象// node里 顶层对象是global

转载于:https://www.cnblogs.com/treasurea/p/11228420.html

数组 字符串的解构赋值 以及const命令相关推荐

  1. ES6-4/5 解构赋值、函数默认值、数组解构、对象解构

    ES-4 解构赋值.函数默认值.数组解构.对象解构 ES-5 隐式转换.函数参数解构.解构本质.()用法 一 解构赋值 1 虚值 含义:在Boolean转换结果为假的值falsy 2 函数默认值 ES ...

  2. 【ES6】let命令、const命令、解构赋值

    let命令 ES6 新增了let命令,用来声明变量.它的用法类似于var,但是也存在新的特性. let所声明的变量,只在let命令所在的代码块内有效,避免全局污染.(适用于for循环) {let a ...

  3. 【ES6】阮一峰ES6学习(一) let、const、解构赋值

    let 和 const 命令 1. let 概念:块级作用域. 不存在变量提升:在声明变量前使用该变量,会报错. 暂时性死区:形成了封闭作用域,在代码块内,使用let声明变量之前,该变量都是不可用的. ...

  4. 【ES6】变量的解构赋值

    [ES6]变量的解构赋值 一.什么叫解构赋值? 二.解构赋值有哪些分类?写法? 1)对数组的解构赋值 2)对对象的解构赋值 3)对字符串的解构赋值 4)对数值和布尔值的解构赋值 5)对函数参数的解构赋 ...

  5. ECMAScript6变量的解构赋值

    ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring) ###数组的解构赋值 //ES5 //var a = 1; //var b = 2; //va ...

  6. json解析 子类和父类同名属性如何赋值_想学变量的解构赋值?看完这一篇就够了...

    序言 ES6允许按照一定模式从数组和对象中提取值,然后对变量进行复制,这被称为解构(Destructuring) 数组的解构赋值 基本用法 像上面的例子,可以从数组中提取值,按照对应位置对变量赋值,这 ...

  7. ES6的新特性(3)——变量的解构赋值

    变量的解构赋值 数组的解构赋值 基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). let a = 1; let b = 2; le ...

  8. ES6中解构赋值深入解读

    ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构 1.数组的解构赋值 let [head, ...tail] = [1, 2, 3, 4]; head // 1 tail ...

  9. ECMAScript 6入门 - 变量的解构赋值

    定义 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 解构赋值不仅适用于var命令,也适用于let和const命令. 解构赋值的规则是,只要 ...

最新文章

  1. 深刻理解:反向代理服务器
  2. STM32 之十六 深入了解 ADC 工作原理及参考电压变动的影响
  3. bzoj1407: [Noi2002]Savage
  4. 【终结版】C#常用函数和方法集汇总
  5. MapReduce运行机制
  6. 数据中台技术及业务发展史与未来趋势展望
  7. Jzoj5237 最长公共子序列
  8. 计算机省二c语言编程改错题,2013年计算机二级C语言上机试题六十九
  9. ASP.NET自定义控件示例:ASP.NET Custom control with designer integration
  10. 给HTML静态网页设置端口号 安装静态服务器
  11. hadoop相关(以期为单位)
  12. 计算机毕业设计ssm+vue基本微信小程序的“香草屋”饮料奶茶点单小程序
  13. 什么牌子的降噪耳机好用又实惠?平价好用的蓝牙耳机推荐
  14. 车载网络测试 - UDS诊断篇 - 故障码(DTC)
  15. RHEL iSCSI
  16. python携程使用_Python爬虫之携程网笔记一
  17. spss之“方差分析”
  18. java park unpark_LockSupport(park/unpark)源码分析
  19. web前端100道面试题
  20. ROS 代码去掉 ROS 依赖

热门文章

  1. 04. 字符串合并与拆分写法小结
  2. 算法与数据结构--数组和链表的区别
  3. LeetCode 402. 移掉K位数字 中等难度
  4. 77.数据库里怎么预防死锁?-80.视图索引
  5. “妈妈打工,爸爸是盲人”小学生记错开学时间独自上学,原因心酸
  6. Socket心跳包机制
  7. 13条注释 tips
  8. inotify java maven_INOTIFY 系列(一) 安装 和初步使用
  9. python工资管理系统课程设计_高校教师绩效工资管理系统设计开发,源码下载
  10. linux用两种方法找到cuond,很基础的Linuxshell脚本学习.doc