use*_*451 8 javascript ecmascript-6
function function_name()
{
var a=1;
var b=2;
return {a, b}
}
let {p1, q1} = function_name()
Run Code Online (Sandbox Code Playgroud)
为什么我得到有关的价值观的错误信息p1,q1如undefined?但是,下面的代码给出了预期的结果:
var o = {p: 42, q: true};
var {p, q} = o;
console.log(p); // 42
console.log(q); // true
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释两个代码示例之间的区别吗?
Pra*_*dey 16
您正在获得所需的输出,因为function_name()返回的对象具有两个变量a和b具有一些值.
function function_name()
{
var a=1;var b=2;
return {a,b}
}
Run Code Online (Sandbox Code Playgroud)
这return {a, b}相当于return {a: a, b: b}相当于return {a: 1, b: 2}
要获得将调用方法签名更新为以下所需的确切值:
let {a, b} = function_name()
Run Code Online (Sandbox Code Playgroud)
注意:使用a或b作为变量名称不是一个好习惯.您应该使用有效的名称.
它是一个解构,它使用大括号中的键来获取具有相同键的赋值的值.您的函数返回一个对象
{ a: 1, b: 2 }
Run Code Online (Sandbox Code Playgroud)
然后你想要获得名称p1和属性的属性p2.显然,对象中没有带有此名称的键,因此结果中没有属性.
{ a: 1, b: 2 } => get { p1 and p2 } => {}
Run Code Online (Sandbox Code Playgroud)
工作实例
{ p: 42, q: true } => get { p and q } => { p: 42, q: true }
Run Code Online (Sandbox Code Playgroud)
与另一个属性
{ p: 42, q: true, foo: 42 } => get { p and q } => { p: 42, q: true }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6138 次 |
| 最近记录: |