ES6函数参数解构-创新互联
ES6函数参数解构
常规的JavaScript若要给函数传递的参数是一个对象,需要像下面这样来实现:
站在用户的角度思考问题,与客户深入沟通,找到祥云网站设计与祥云网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、成都网站设计、企业官网、英文网站、手机端网站、网站推广、空间域名、虚拟主机、企业邮箱。业务覆盖祥云地区。function sayName(person) {
if(Object.prototype.toString.call(person) == '[object Object]') {
console.log( `${person.firstName} ${person.lastName}`);
}
}
sayName({firstName: 'Stephen', lastName: 'Curry'});
在函数内部通过对象属性的形式来获取值。
采用ES6解构的方式可以更加直观便捷地为函数传递对象参数。
先要明确对象解构的几点基本知识:
1.ES6的对象可以实现简写
const firstName = 'Stephen';
const lastName = 'Curry';
const person = {
firstName,
lastName,
}
console.log(person.firstName + ' ' + person.lastName); // Stephen Curry
这里的对象写法就等同于下面的写法:
const person = {
firstName: firstName,
lastName: lastName,
}
2.ES6的解构是用来给变量赋值的
const person = {
firstName: 'Stephen',
lastName: 'Curry',
};
const {firstName, lastName} = person;
console.log(firstName + ' ' + lastName);
结合 1 ,这里的 {firstName, lastName}实际上就是 {firstName: firstName, lastName: lastName},在这个对象里,显然冒号后面的属性值才是我们需要赋值的变量,解构会在右侧表达式对象中找到和左侧对象相同的属性名,以该属性值为对应变量赋值,如果没找到,那么该变量值为undefined。
有了上述的两点,我们可以将对象解构应用到为函数传递参数上
function sayName({ firstName, lastName }) {
console.log( firstName + ' ' + lastName );// 注意这里可以直接访问到两个解构赋值的变量
}
let person = {
firstName: 'Stephen',
lastName: 'Curry'
}
sayName(person); // Stephen Curry
还可以给参数提供默认初始值:
function sayName({ firstName = 'foo', lastName = 'bar'} = {}) {
console.log( firstName + ' ' + lastName );
}
let person = {
wrongFirstName: 'Stephen',
lastName: 'Curry'
}
sayName(person); // foo Curry
思考一下下面这种写法:
function sayName({ firstName, lastName = 'bar'} = {firstName: 'lebron'}) {
console.log( firstName + ' ' + lastName );
}
sayName(); // lebron bar
看起来像是也达到了提供参数默认值的效果,但是原因是右边的firstName会作为对象解构赋值给左边的firstName,这并不是函数参数的默认值;
下面的例子中,传递的参数person会直接取代右边的{firstName: 'lebron'},然后被当作真正的解构赋值对象。
function sayName({ firstName, lastName = 'bar' } = {firstName: 'lebron'}) {
console.log( firstName + ' ' + lastName );
}
let person = {
wrongFirstName: 'Stephen',
lastName: 'Curry'
}
sayName(person); // undefined Curry
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网站栏目:ES6函数参数解构-创新互联
本文地址:http://ybzwz.com/article/gjdpo.html