一、将obj的属性name和age作为实参传进函数fun,给函数的形参name、age接收
var obj = {
name: "zs",
age: 11,
email: "nodejs@163.com"
}
function func(name, age) {
console.log(name, age);
}
func(obj.name, obj.age);
二、使用解构的方法
(1)【传了实参】传了一个对象,参数直接使用对象解构的形式
var obj = {
name: "zs",
age: 11,
email: "nodejs@163.com"
}
//实参是obj--对应形参是{ name, age, email }
//这里实际上就是{name:name,age:age,email:email}的间写
function func({ name, age, email }) {
console.log(name, age, email); //zs 11 nodejs@163.com
}
func(obj);
(2)【没有传实参】如果形参是使用的解构的形式,但是却没有传实参会报错,如下。可以通过给形参设置一个默认值的方法解决,看(3)。
var obj = {
name: "zs",
age: 11,
email: "nodejs@163.com"
}
function func({ name, age, email }) {
console.log(name, age, email);//不传参会报错:Cannot destructure property `name` of 'undefined' or 'null'
}
func();
(3)【没有传实参报错】给形参设置一个默认值
var obj = {
name: "zs",
age: 11,
email: "nodejs@163.com"
}
//在这里没有传参的话,默认是把一个空对象结构,得出的是undefined
function func({ name, age, email } = {}) {
console.log(name, age, email); //undefined undefined undefined
}
func();
(4)如果是解构的形式,给形参默认值,是以 等号= 给默认值
//没有传参,默认是空对象,本来应该都是undefined,但是name设置默认值是nodejs
function func({ name = "nodejs", age, email } = {}) {
console.log(name, age, email); //nodejs undefined undefined
}
func();
function func({ name = "nodejs", age, email } = {}) {
console.log(name, age, email); //js undefined 123@qq.com
}
// 传参传的对象,是:
func({ name: "js", email: "123@qq.com" });