为什么写了 baz 之后,打印 foo 报错呢?

为什么写了 baz 之后,打印 foo 报错呢?

http://img1.sycdn.imooc.com//climg/5e9490a50938829904160051.jpghttp://img1.sycdn.imooc.com//climg/5e9490af0921814c00890041.jpg
http://img1.sycdn.imooc.com//climg/5e9490d609a5a01304360048.jpghttp://img1.sycdn.imooc.com//climg/5e9490f009662d9c03360098.jpg
我有两个疑问:
1.为什么不写 baz 时,打印 foo 正常,但是写了 baz 之后,打印 foo 报错呢?
2.为什么平时用 { foo } = obj 比较多呢?而不是 { foo : baz } =obj 呢?

正在回答

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

2回答

同学你好,通俗的理解就相当于一个中介,通过它找到同名属性,再把属性值赋值给后面的变量。

祝学习愉快 ~

好帮手慕夭夭 2020-04-14 11:38:06

同学你好,问题解答如下:

1.因为只写foo的时候,foo就是变量。解构赋值时,找到对象同名的属性并把值赋值给变量foo,所以可以打印。

http://img1.sycdn.imooc.com//climg/5e952eaf09be7b0905270068.jpg

使用如下语法时,foo为模式,baz为变量。对象解构赋值的内部机制,是通过模式foo找到同名属性,然后再赋给对应的变量baz,真正被赋值的是变量baz,而不是模式foo。通俗的说,此时foo就是一个中介,它不是变量,所以输出会报错。

http://img1.sycdn.imooc.com//climg/5e952f1209410fb505270055.jpg

2.要具体情况具体分析,第一种语法是直接变量名和属性名同名。第二种语法是,假如不想要变量名与属性名同名,就另起一个名字。如果没有这种必要,那么使用第一种就行哦。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 leeroy白 #1
    这个foo模式是啥呀?
    2020-04-14 11:43:44
  • 好帮手慕夭夭 回复 提问者 leeroy白 #2
    通俗的理解就相当于一个中介,通过它找到同名属性,再把属性值赋值给后面的变量。
    2020-04-14 13:54:17
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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