发表于: 2021-06-29 20:47:14
2 2035
今天完成的事情: angular 任务添加了富文本,和日历插件;angular 文档的巩固,
明天计划的事情:angular 任务上传图片;angular文档巩固;JS基础知识巩固,
遇到的问题:目前就剩angular 任务上传图片还没搞出来;
收获:
总结目前的个人情况:并没有满足自己的期望;发现有好多知识点都是描过并没有做到完全理解,做任务急于求成,搞得现在并不理想。。早点发现自身问题,尽快纠正,好好把基础知识学牢靠。每次写收获都是自己学的看的知识点,都没点干货,,
ES变量的解构赋值:
数组解构赋值:
以前,为变量赋值,只能直接指定值。
ES6 允许写成下面这样:可以从数组中提取值,按照对应位置,对变量赋值。
只要等号两边的模式相同,左边的变量就会被赋予对应的值。下面是一些使用嵌套数组进行解构的例子:如果解构不成功,变量的值就等于undefined。
对象解构赋值:对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。(两个同名属性的次序不一致,但是对取值完全没有影响)
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
上面代码对数组进行对象解构。数组arr
的0
键对应的值是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
评论