【第10周 ES6解构赋值 3-10 对象的解构赋值】为什么显示的是undefined?

【第10周 ES6解构赋值 3-10 对象的解构赋值】为什么显示的是undefined?

问题描述:

Q1:老师麻烦看下为什么b显示的是undefined?

相关截图:

https://img1.sycdn.imooc.com//climg/61b9813d09cf1eb826081496.jpg

相关代码:

 let node = {
        type:'Identifier',
        name:'ES',
        loc:{
            start:['line','column'],
            end:{
                line:1,
                column:4
            }
        }
    };
    
    //等号右边是直接是对象node
    // const{   
    //     ,,a:{b:[c,],d:{e,}}   
    //     //数组可以用逗号','省略,对象不能省略
    // } = node;
    
    const{
        loc:{
            start:[a,],
            end:{
                b,c
            } 
        }  
    } = node;
    
    document.write(`a:${a},<br>b:${b}`);


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小李 2021-12-15 14:27:17

同学你好,解构赋值中遇到json形式的直接解构key就ok如下:

https://img1.sycdn.imooc.com//climg/61b98b27098cd9d312860761.jpg

b显示undefined是因为b未定义。如下例:

https://img1.sycdn.imooc.com//climg/61b98ab109d7bb3c13010710.jpg

同学自己试试,祝学习愉快。

  • 提问者 easyschen #1
    a为啥可以啊?  麻烦请教下老师


    2021-12-15 17:39:59
  • 好帮手慕小李 回复 提问者 easyschen #2

    同学你好,因为a是解构数组中的值,这里要注意变量a可以是任意名字,当用到解构赋值的时候,要注意被解构的类型,如是数组的情况,解构时是按照对应的下标进行解构的,所以同学按照这么写是ok的,如是obj(json)的形式,解构时是按照key解构的。

    如下图:

    https://img1.sycdn.imooc.com//climg/61b9c55a098d55d308320424.jpg

    祝学习愉快。

    2021-12-15 17:57:53
  • 提问者 easyschen 回复 好帮手慕小李 #3
    1. 对象是k=>v的键值对,所以要用对应的k来解构

    2. 数组随意,所以a换成其他字符串(b、c、d)也行

    是这样吗?  重新复习一遍,有点忘记了,麻烦问下老师

    2022-01-06 18:20:01
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师