问答

js执行顺序和作用域,一直不明白,求解答。

作者:admin 2021-08-20 我要评论

这个b为什么是undefined const {a, b:{c}} = obj; console.log(a,b,c); ### 解构赋值声明语句确实容易混,我之前一直记不住到底冒号前还是冒号后是声明部分。 有...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
这个b为什么是undefined
 const {a, b:{c}} = obj;
    console.log(a,b,c);
###

解构赋值声明语句确实容易混,我之前一直记不住到底冒号前还是冒号后是声明部分。
有冒号的情况,冒号后才是声明部分。

如果记得“解构也可以设置默认值的”,就很容易记忆。

let { a: b = 1 } = obj

b才是声明的变量,从obj中读a赋值给b,读不到则b取默认值1.

###

这里的b仅作为解构标识,并没有在上下文中定义,你读到的b不是你理解看到的b

const b = 1;
const {a, b: {c}} = obj;
console.log(a, b, c);  // b = 1

你要这样写

const {a, b} = obj;
const {c} = b;

console.log(a, b, c);

才能读到b

###

image.png

看下babel的转化ES6转ES5就知道了

因为你根本就没声明b

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 使用箭头函数return数据不能实现

    使用箭头函数return数据不能实现

  • 个人小程序号能接入小程序3D地图吗?

    个人小程序号能接入小程序3D地图吗?

  • vue 移动端项目中,使用了better-scrol

    vue 移动端项目中,使用了better-scrol

  • css如何做出区域平均划分为四列

    css如何做出区域平均划分为四列

腾讯云代理商
海外云服务器