ES6 变量的解构赋值,中级web开发工程师

简介: ES6 变量的解构赋值,中级web开发工程师
// c = “aaa”
// a = error: a is not defined

就是把’aaa’的值赋值给c,a只是一个匹配模式,c才是真正的变量,这是针对这一种对象的解构赋值

  • 如果要将一个已经声明的变量用于解构赋值
// 错误的写法
let x;
{x} = {x: 1};
// SyntaxError: syntax error
// 正确的写法
let x;
({x} = {x: 1});

由于let x;该语句以及结束,js解释器就会把{x}解析成代码块

默认值

var {x = 3} = {};
// x = 3
var {x = 3} = {x: undefined};
// x = 3
var {x = 3} = {x: null};
// x = null

属性的简写

  • ES6 允许在大括号里面,直接写入变量和函数,作为对象的属性和方法
// 1.属性简写
function fn(x, y){
return{
x: x,
y: y
}
}
// ==>
function fn(x,y){
return {x,y};
}
// 2.方法简写
const obj1 = {
fn : function(){
return 0;
}
}
// ==>
const obj2 = {
fn(){
return 0;
}
}
// 3.常用实例
let ms = {};
function getItem (key) {
return key in ms ? ms[key] : null;
}
function setItem (key, value) {
ms[key] = value;
}
function clear () {
ms = {};
}
const exports1 = {
getItem: getItem,
setItem: setItem,
clear: clear
};
// ==>
const exports2 = { getItem, setItem, clear };
// 4.简写的对象方法不能用作构造函数,会报错
const obj3 = {
f() {
this.foo = ‘bar’;
}
};
new obj3.f() // 报错

属性表达式

JavaScript定义属性的方式,在ES6之前只有一种方法

  • 直接用标识符作为属性名称(ES6以前)
// 1. 用于属性
let a = ‘he’;
const obj1 = {
[a] : true,
}
console.log(obj1[a]) // true
console.log(obj1.ab) // 2
console.log(obj1[‘ab’]) // 2
// 2. 用于方法名称
const obj2 = {
‘h’+‘e’{
return ‘2’;
}
}
obj2.he() //“2”
// 3. 注意属性名不能为对象
const keyA = {a: 1};
const keyB = {b: 2};
const myObject = {
};
myObject // Object {[object Object]: “valueB”}
// keyA和keyB得到的都是[object Object],所以keyB会把keyA覆盖掉,而myObject最后只有一个[object Object]属性,这就是","的操作
  • 属性名表达式与简洁表示法,不能同时使用,会报错const baz = { [foo] };
  • 属性名表达式如果是一个对象,默认情况下会自动将对象转为字符串[object Object]

回到顶部 目录

函数参数的解构赋值


语法:[[1, 2], [3, 4]].map(([a, b]) => a + b); \\ [3, 7]

function fn({
a,
b,
c = 10,
d = 20,
} = {}){
return a+b+c+d;
}
fn({a:1,b:2})
// 33

语法都是上面数组和对象的解构赋值

圆括号问题


尽量不要写带有()的语句出来

解构赋值虽然很方便,但是解析起来并不容易。对于编译器来说,一个式子到底是模式,还是表达式,没有办法从一开始就知道,必须解析到(或解析不到)等号才能知道,乱加圆括号也是导致编译报错

不能使用圆括号的情况:

  1. 变量声明语句 let [(a)] = [1]
  2. 函数参数 function fn([(z)]){}


目录
打赏
0
0
0
0
80
分享
相关文章
网易web安全工程师进阶版课程
《Web安全工程师(进阶)》是由“ i春秋学院联合网易安全部”出品,资深讲师团队通过精炼的教学内容、丰富的实际场景及综合项目实战,帮助学员纵向提升技能,横向拓宽视野,牢靠掌握Web安全工程师核心知识,成为安全领域高精尖人才。 ## 学习地址
95 6
网易web安全工程师进阶版课程
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
Magnitude是一个基于视觉AI代理的开源端到端测试框架,通过自然语言构建测试用例,结合推理代理和视觉代理实现智能化的Web应用测试,支持本地运行和CI/CD集成。
399 15
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
|
5月前
|
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
136 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【Web 前端】ES6新增的内容有哪些?
【5月更文挑战第1天】【Web 前端】ES6新增的内容有哪些?
【Web 前端】ES6新增的内容有哪些?
【Web 前端】es6 中的箭头函数?
【5月更文挑战第1天】【Web 前端】es6 中的箭头函数?
【Web 前端】ES6中,Set和Map的区别 ?
【5月更文挑战第1天】【Web 前端】ES6中,Set和Map的区别 ?
【css炫酷动画】让面试官眼前一亮的故障风格文字动画,3年Web前端开发工程师面试经验分享
【css炫酷动画】让面试官眼前一亮的故障风格文字动画,3年Web前端开发工程师面试经验分享
web前端之ES6的实用深度解构赋值方法、复杂的解构赋值
web前端之ES6的实用深度解构赋值方法、复杂的解构赋值
120 1

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问