《ECMAScript 6 入门》笔记 变量的解构赋值

RK3588开发板RKNPU2环境部署实战:更新rknn_server与librknnrt.so详解 本文详细介绍了在RK3588开发板上更新rknn_server与librknnrt.so核心组件的完整实战流程。通过adb工具推送文件、设置权限并执行同步操作,确保RKNPU2环境部署成功,从而解决推理速度慢或初始化失败等问题,提升AI模型运行效率与稳定性。 阅读详情

 

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。

eg.

let [a, b, c] = [1, 2, 3];

a//1
b//2
c//3

let [a] = [1,2,3];

a//1

let [a,b] =[1];
a//1
b//undefined

let {a} = {a:1,b:2,c:3}

a//1


 可见,当 = 左边的格式与右边的格式一致时,左边的变量就会被赋值,

本质上是模式匹配

let [x, y, z] = new Set(['a', 'b', 'c']);
x // "a"

 只要某种数据结构具有Iterterator接口都可以采用数组形式的解构赋值

解构赋值允许指定默认值

let [a=1,b] = [2,2];
a//2 
b//2

let [a=1,b]  = [undefined,2];
a//1
b//2
let [a=1,b] =[null,2];

a//null
b//2

 数组成员是null 默认值不会生效,因为null 不严格等于undefined 

function f() {
  console.log('aaa');
}

let [x = f()] = [1];

x//1

当默认值为一个表达式时,这个表达式时惰性求值的,即只在用到的时候,才回去求值

function f() {
  console.log('aaa');
}

let [x = f()] = [1];

x//1

 解构可以用于对象,数组的解构是按次序排列的,对象则按照变量名。

当解构失败是变量的值为undefined ,对对象解构,也可以很方便的将现有对象的方法,赋值到某个变量

如果变量名与属性名不一致,可以使用 对象属性名:变量名 来获取

let {a:b} = {a:1};
b//1
let {a:a} ={a:1};
a//1

这实际的说明了对象的解构赋值详细的写法,也说明了对象的解构赋值的内部机制,是先找到同名属性,然后赋值给对应

的变量,真正赋值的是后者而不是前者

let obj = {
  arr: [
    'Hello',
    { c: 'World' }
  ]
};

let {arr:[b,{c}]} =obj;

b//Hello
c//World

与数组一样解构也可以用于嵌套解构的对象,arr是模式模式不是变量,所以不会被赋值

 

let obj = {
  arr: [
    'Hello',
    { c: 'World' }
  ]
};

let {arr,arr:[b,{c}]} =obj;
arr//[
    'Hello',
    { c: 'World' }
  ]
b//Hello
c//World

 

这样则是赋值

let obj =[];

let{a:obj.b} ={a:'a'};
obj.b//'a'

 当然也可以这样赋值

let obj ={};

let obj1 ={a:1};
Object.setPrototypeOf(obj, obj1);

let{a} =obj;

a//1

 obj的原型对象是obj1 a不是obj的自身属性,而是继承自obj1的属性,解构赋值是可以获取的。

所以解构赋值可以获取到继承的属性。

注意事项

  • 如果要将一个已经声明的变量用于解构赋值。
// 错误的写法
let x;
{x} = {x: 1};
// SyntaxError: syntax error
//正确的写法
let x;
({x} ={x:1});
x//1
  • 解构赋值允许左边的模式之中不放置任何变量名
({} ={a:1};)
  • 由于数组是特殊的对象,因此可以对数组进行对象属性的解构
let {0:a} = [1];
a//1

字符串解构赋值

let [a,b,c] = 'def';

a//d
b//e
c//f

let {length:len} ='abc';

len//3

此时字符串被转换成了一个类似数组的对象

数组都有length 属性,所以可以从字符串中解构赋值到length属性

数值和布尔值的解构赋值

let {toString: s} = 123;
s === Number.prototype.toString // true

let {toString: s} = true;
s === Boolean.prototype.toString // true

解构赋值时,如果右边是数值或布尔值,则会先转化为对象

数组和布尔值转化的包装对象都有toString属性,因此可以解构赋值

let { prop: x } = undefined; // TypeError
let { prop: y } = null; // TypeError

解构赋值规则,只要=右边不是对象或者数组就先将其转化为对象,null 和 undefined 不能转化为对象,所以对他们进行

解构赋值会报错

函数参数的解构赋值

function add([x, y]){
  return x + y;
}

add([1, 2]); // 3

 函数add 参数传入为一个数组,在传入的那一刻参数被解构赋值为x,y 两个变量

 

 

 

ADS 使用调整器动态调参教程(Tuning) ADS动态调参教程 阅读详情

相关推荐

手把手教学:利用AutoDL与vLLM快速部署DeepSeek-R1大模型实战指南

本文详细介绍了如何利用AutoDL平台和vLLM框架快速部署DeepSeek-R1大模型的实战指南。从服务器配置、vLLM安装优化到模型部署的两种方案,再到性能调优和生产环境建议,手把手教你高效完成大模型部署。特别针对国内开发者遇到的网络问题提供了稳定解决方案,并分享了显存优化、磁盘清理等实用技巧。

weixin_42531779的博客 326

ECMAScript 6 入门学习笔记(二)——变量的解构赋值

一、数组的解构赋值 let [foo, [[bar], baz]] = [1, [[2], 3]];   ①可多不可少,等号的右边是数组 let [x, y] = [1, 2, 3]; //可以 let [bar, foo] = [1]; //foo的值为undefined // 报错 let [foo] = 1; let [foo] = false; let [f...

weixin_30757793的博客 104

EtherCAT从站协议栈---- sampleappl.c 文件解析

这个源文件实际上包含该项目的入口函数main函数。 那么如何找到入口函数呢? 可以进入debug的simulator模式,选中run to main(), 当执行完启动文件startup_cm3.s后就进入了main函数(注意在main函数之前还进入了SystemInit函数), 如下图所示: 这个main函数主要架构如下: int main(void) { HW_Init(); /*PDI(过程数据接口)初始化,这里用的是MCI接.

Jiawei_Z的博客 3066

快速入门ES6语法(ECMAScript 6)

🍎前言 ECMAScript 6(简称 ES6)是 JavaScript 语言的下一代标准,在 2015 年 6 月正式发布。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。对于常见的ES6和JS是什么关系的话题呢,我在这里提一下:ES6是JS的规格,而JS是ES6的一种实现。 🍎语法 🔰let声明变量 在使用ES6之前我们更多的是使用var来声明一个变量,而var变量的声明是没有作用域的概念的,使用var对相同的变量名是可以声明多次的;而let就.

提笔忘字的帝国 3447

第零章 序 Chisel教程汇总

笔者目前西安交通大学微电子硕士在读,研究方向为数字集成电路设计与体系结构。鉴于目前RISC-V的火热程度,笔者参与了课题组的RISC-V项目,并了解、学习了颇受关注的新型硬件构建语言——Chisel,当前参与的神经网络加速器设计便是使用Chisel开发的。这是一门敏捷开发语言,据称要比传统的Verilog语言快很多。在亲身使用过后,笔者发现确实快了不少。这主要得益于Scala作为高级语言的简洁风格...

qq_34291505的博客 7万+

OpenCV和Halcon分别实现彩色图像的白平衡效果

实现白平衡算法中的灰度世界法,能有效改善图像发红/发蓝/发绿的现象 1、OpenCV #include <opencv2/opencv.hpp> using namespace cv; int main() { Mat g_srcImage,dstImage; vector<Mat> g_vChannels; g_srcImage = im...

$firecat利白的代码足迹$ 2827

ECMAScript6学习——变量的解构赋值

解构赋值可以方便地将一组参数与变量名对应起来。

qq_43391730的博客 836

人工智能面试总结-分类与聚类

目录说说常用的分类算法,以及各自的优缺点?说说为什么正确率有时不能有效评估分类算法?说说什么样的分类器最好?说说聚类算法有哪些衡量标准?(选看)各聚类算法性能比较汇总说说什么是聚类,你知道哪些聚类算法?具体展开介绍你知道的聚类算法?说说K-Means聚类算法流程?说说K-Means聚类算法如何调优?说说K-Means聚类算法如何选择初始点?说说K-Means聚类聚的是特征还是样本?说说K-Means聚类的特征距离是如何计算的?说说聚类与分类的区别?手撕K-Means聚类 说说常用的分类算法,以及各自的优缺点

啥都生的博客 3860

《ECMAScript 6 入门》【二、变量的解构赋值】(持续更新中……)

1

主要领域:前端开发 2513

Android NDK/JNI面试题大全及参考答案(3万字长文)

是一套工具集合,它允许开发者为Android平台编写原生应用程序或者应用程序的部分模块。NDK 主要用于开发那些需要高性能计算的应用程序,例如游戏引擎、图像处理软件或音频/视频编码解码器等。通过使用 C 或 C++ 编写代码,开发者可以利用硬件加速功能,提高应用性能。NDK 提供了一系列工具来帮助开发者完成从源代码到可执行文件的整个过程,包括编译、链接、调试等功能。

大模型大数据攻城狮的专栏 1256

Vue3 - Element Plus 组件库 Tabs 标签页右侧区域插入按钮,<el-tabs> / <el-tab-pane> 选项卡组件右侧自定义插槽内容教程(右边区域添加自定义按钮功能区)

vue3,elementplus,tabs选项卡如何在插槽按钮,tabs标签页组件怎么自定义右侧内容,vue3elementplustabs组件右侧插槽按钮,element-plus在el-tabs组件的最右侧添加按钮,如何在选项卡右边加入按钮搜索框等内容,哪个属性能在tab选项卡右侧插入自定义按钮,在el-tabs组件最右侧添加按钮,vue3el-tabs组件怎么自定义右侧插槽内容,Tabs标签页右侧自定义插槽,ElementPlusTab右边加按钮,el-tabs组件自定义右侧按钮,在E

🏆 前端领域优质创作者 7015

ECMAScript 6 变量的解构赋值

ECMAScript 6 变量的解构赋值 1、数组的解构赋值 var [a,b,c] = [1,2,3]; a //1 b //2 c //3 这种从数组中提取值,按照对应的位置,对变量进行赋值。 下面的是一些嵌套数组解构的例子(解构不成功,变量的值就等于undefined) let [foo,[[bar],baz]] = [1,[[2],3]]; foo //1 bar...

developestudent的博客 222

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ES6笔记-《ECMAScript 6 入门》

看文档重新学习发现了挺多没注意到的细节

2301_76603086的博客 890

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ECMAScript 6之变量的解构赋值

变量的解构赋值 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。 1. 数组的解构赋值 以前为变量赋值,只能直接指定值。 // 直接指定值 let a = 1; let b = 2; let c = 3; ES6 允许通过解构进行赋值。 let [a, b, c] = [1, 2, 3]; a; // 1 b; // 2 c; // 3 上面代码中,a,b,c三...

基地的博客 456

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ECMAScript 6 入门——变量的解构赋值

二、遍历的解构赋值 1. 数组的解构赋值 基本用法 ES6解构:按照一定模式便捷的从对象和数组中提取/赋值 便捷性说明 前(ES5) let a = 1; let b = 2; let c = 3; 后(ES6) let [a, b, c] = [1, 2, 3]; 常用情况 嵌套数组赋值 let [foo, [[bar], baz]] = [1, [[2], 3]]; foo // 1...

xiedongze__的博客 334

ECMAScript6 解构赋值

结构赋值是一种赋值模式,通过将 属性/值 从 对象/数组 中取出,赋值给其他变量。

Mr_Bobcp的博客 8303

ECMAScript6入门-笔记

此文为ECMAScript 6 入门 - 阮一峰 - 读后笔记2.let/const let let对应块级作用域,且没有声明提升 暂时性死区 下面示例代码中存在全局变量tmp,但是块级作用域内let又声明了一个局部变量tmp,导致后者绑定这个块级作用域,所以在let声明变量前,对tmp赋值会报错 var tmp = 123; if (true) { tmp = 'abc'; // R

Lix7's Home 1594

ECMAScript6语法入门笔记

ES6声明变量有六种方法: ES5 只有两种声明变量的方法:var命令和function命令。 ES6 除了添加let和const命令,还有class命令和import命令。 let、const和class命令声明的全局变量,不属于顶层对象的属性。 例如: var a = 1; // 如果在 Node 的 REPL 环境,可以写成 global.a // 或者采用通用方法,写成 this.a wi...

Jason_LS的博客 2224

ECMAScript6-变量解构赋值

变量赋值解构 上期我们讲述了let和const相关内容,这期我们接着讲变量解构赋值。 ES6 允许按照⼀定模式,从数组和对象中提取值,对变量进⾏赋值,这被称为 解构(Destructuring) 数组的解构赋值 对象的解构赋值 字符串的解构赋值 数值和布尔值的解构赋值 函数参数的解构赋值 圆括号问题 ⽤途 ECMAScript6变量赋值解构1、数组的解构赋值2、对象的解构赋值3、字符串的解构赋值4、数值和布尔值的解构赋值(了解)5、函数参数的解构赋值6、圆括号问题(了解)7、用途总结 1、数组的解

weixin_45969711的博客 392

ECMAScript 6(3)变量的解构赋值

目录 变量的解构赋值 数组的解构赋值 1. 常规赋值 2.嵌套数组 3. 右边不是数组 (报错) 4. set 解构 5.具有 Iterator 接口 带默认值的数组解构赋值 1. 常规情况 2. 哪种情况下默认值生效 对象的解构赋值 1. 常规情况 2.变量名就是key 3. 解构失败 4.解构赋值时,赋值形式并非深度复...

jiandan1127的博客 895

《ECMAScript6入门》-变量的解构赋值

1、数组的结构赋值 1.1 let [a, b, c] = [1, 2, 3]; 1.2、不完全解构,即等号左边的模式,只匹配一部分的等号右边的数组,解构依然可以成功 let [x, y] = [1, 2, 3]; x // 1 y // 2 1.3 如果等号的右边不是数组,或者不是可遍历的结构, // 报错 let [foo] = 1; let [foo] = false; let [foo...

如果我年少有为不自卑 222

ECMAScript 6 入门笔记(一)let,const,解构

最近重新看下阮一峰的ecmascript6教程,记性不太好,用的也不多所以记下笔记把自己认为重要的东西记录下来方便回顾,贴代码和调整下结构让查起来更快ECMAscript6 入门LET和CONSTES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。const声明一个只读的常量。一旦声明,常量的值就不能改变,const必须声明时就初始化。le

机智的皮卡丘的博客 1082

ECMAScript 6 学习之——变量的解构赋值

变量的解构赋值 数组的解构赋值 对象的解构赋值 字符串的解构赋值 数值和布尔值的解构赋值 函数参数的解构赋值 圆括号问题 用途 数组的解构赋值 基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 以前,为变量赋值,只能直接指定值。 let a = 1; let b = 2; let c = 3; ES6...

qq_25927437的博客 194

【前端】ECMAScript6从入门到进阶

ECMAScript6入门到进阶

互联网小阿祥 1634

ECMAScript6-学习笔记(变量的解构赋值)

数组的解构赋值 基本用法ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。以前,为变量赋值,只能直接指定值。var a = 1; var b = 2; var c = 3; ES6允许写成下面这样。var [a, b, c] = [1, 2, 3]; 上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。本质上,这种写法属于“模式匹配”,

web_LamHo的博客 846

ECMAScript 变量的解构赋值

1.数组的解构赋值 基本用法 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构 以前,为变量赋值,只能直接指定值。 var a = 1; var b = 2; var c = 3; ES6允许写成下面这样。 var [a, b, c] = [1, 2, 3]; 上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。 本质上,这种写法属于“模式匹配”,只要等号两边...

Bobby的博客 269
上一篇: 《ECMAScript 6 入门》笔记 let 和 const 命令
下一篇: 《ECMAScript 6 入门》笔记(3) 字符串的扩展
github_39465103
博客等级 码龄9年 1粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值