Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 关于去结构函数参数的困惑_Javascript_Ecmascript 6_Destructuring - Fatal编程技术网

Javascript 关于去结构函数参数的困惑

Javascript 关于去结构函数参数的困惑,javascript,ecmascript-6,destructuring,Javascript,Ecmascript 6,Destructuring,在下面的示例中,为什么whois()函数可以访问displayName2和name1 函数whois({displayName:displayName2,fullName:{firstName:name1}}){ log(${displayName2}是${name1}`) } 让用户={ 显示名称:“jdoe”, 全名:{ 名字:“约翰”, 姓:“Doe” } } whois(user)/“jdoe is John”displayName和firstName都是可接受的-displayNam

在下面的示例中,为什么whois()函数可以访问displayName2和name1

函数whois({displayName:displayName2,fullName:{firstName:name1}}){
log(${displayName2}是${name1}`)
}
让用户={
显示名称:“jdoe”,
全名:{
名字:“约翰”,
姓:“Doe”
}
}

whois(user)/“jdoe is John”
displayName
firstName
都是可接受的-
displayName2
firstName1
,要访问这些值,需要使用别名

由于只有别名定义为变量,因此尝试使用旧名称访问值时,将抛出“变量未定义”错误

constdestructure1=({a:aa})=>console.log(aa);
解构1({a:5});//获取值
const destructure2=({a:aa})=>console.log(a);

解构2({a:5});//抛出错误,因为在解构赋值中未定义
,值位置将成为赋值的变量

在声明位置(如函数参数)中使用时,值位置中的名称在赋值之前在当前范围中声明

如您的示例所示,值位置也可能描述要分解的嵌套对象,此时需要一个与所述结构匹配的值,该结构遵循上述相同的模式

//数据对象
常量数据={foo:“bar”};
//解构声明和赋值。
//分配目标的结构与数据的结构匹配
设{foo:localVar}=data;
console.log(localVar);//酒吧
//相同,但使用现有的'localVar'变量,而不使用新的声明。
({foo:localVar}={foo:baz});

console.log(localVar);//baz
函数可以访问的参数是位于冒号右侧(
)的参数,并且仅位于对象表示法的最深嵌套级别。在这种情况下,
displayName2
name1
是在那里创建的唯一变量。它的工作原理确实与对象文字相反。我明白了,谢谢。它看起来确实像JSON,但实际上不是。这是调任的简写。So:var o={p:42,q:true};var{p:foo,q:bar}=o;真正的意思是foo=o.p;bar=o.q;完全可以看到我添加的链接。