发表于: 2021-06-29 20:47:14

2 2036


今天完成的事情:  angular 任务添加了富文本,和日历插件;angular 文档的巩固,


明天计划的事情:angular 任务上传图片;angular文档巩固;JS基础知识巩固,


遇到的问题:目前就剩angular 任务上传图片还没搞出来;


收获:

总结目前的个人情况:并没有满足自己的期望;发现有好多知识点都是描过并没有做到完全理解,做任务急于求成,搞得现在并不理想。。早点发现自身问题,尽快纠正,好好把基础知识学牢靠。每次写收获都是自己学的看的知识点,都没点干货,,


ES变量的解构赋值:

数组解构赋值:

以前,为变量赋值,只能直接指定值。

let a = 1;
let b = 2;
let c = 3;

ES6 允许写成下面这样:可以从数组中提取值,按照对应位置,对变量赋值。

let [abc= [123];

只要等号两边的模式相同,左边的变量就会被赋予对应的值。下面是一些使用嵌套数组进行解构的例子:如果解构不成功,变量的值就等于undefined。

let [foo, [[bar], baz]] = [1, [[2], 3]];

foo // 1bar // 2baz // 3

let [ , , third= ["foo""bar""baz"];

third // "baz"

let [x, , y= [123];

// 1y // 3

let [head...tail= [1234];

head // 1tail // [2, 3, 4]

let [xy...z= ['a'];

// "a"y // undefinedz // []

对象解构赋值:对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。(两个同名属性的次序不一致,但是对取值完全没有影响

let { foo, bar } = { foo: 'aaa', bar: 'bbb' };   foo // "aaa"  bar // "bbb"

变量没有对应的同名属性,导致取不到值,最后等于undefined

let { baz } = { foo: 'aaa', bar: 'bbb' };  baz // undefined


(1)如果要将一个已经声明的变量用于解构赋值,必须非常小心。

// 错误的写法let x;{x} = {x: 1};// SyntaxError: syntax error

上面代码的写法会报错,因为 JavaScript 引擎会将{x}理解成一个代码块,从而发生语法错误。只有不将大括号写在行首,避免 JavaScript 将其解释为代码块,才能解决这个问题。

// 正确的写法let x;({x} = {x: 1});

上面代码将整个解构赋值语句,放在一个圆括号里面,就可以正确执行。关于圆括号与解构赋值的关系,参见下文。

(2)解构赋值允许等号左边的模式之中,不放置任何变量名。因此,可以写出非常古怪的赋值表达式。

({} = [true, false]);({} = 'abc');({} = []);

上面的表达式虽然毫无意义,但是语法是合法的,可以执行。

(3)由于数组本质是特殊的对象,因此可以对数组进行对象属性的解构。

let arr = [1, 2, 3];let {0 : first, [arr.length - 1] : last} = arr;first // 1last // 3

上面代码对数组进行对象解构。数组arr0键对应的值是1[arr.length - 1]就是2键,对应的值是3。方括号这种写法,属于“属性名表达式”


字符串解构赋值:

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

const [a, b, c, d, e] = 'hello';   a // "h"    b // "e"   c // "l"   d // "l"   e // "o"

类似数组的对象都有一个length属性,因此还可以对这个属性解构赋值。

let {length : len} = 'hello';    len // 5






返回列表 返回列表
评论

    分享到