这里为什么不能使用Person了?

这里为什么不能使用Person了?

const Person = new class P{

    constructor () {

        P.a =1;

        console.log(P === Person);//这里为什么不能使用Person了?

        console.log('我是类表达式,哈哈');

    }

}();


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

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

2回答
好帮手慕码 2020-09-16 09:36:53

“hyperse”同学你好,两个问题表达的思想是一样的,person为什么为undefined呢,是因为:Person=new class P{}()是赋值操作,先执行等号右侧代码,这时候Person还没有被赋值,所以Person为undefined

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

同学可以再理解一下,如果还是有问题的话,建议同学新建自己的提问,便于以后对于问题的归纳和总结哦。

祝学习愉快~

好帮手慕码 2019-08-22 16:33:21

同学你好!

是因为使用了const。const不存在变量提升,所以这里访问不到Person。可以换成var看下:

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

效果:

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

同学可以测试一下 在函数外打印Person是p对象。

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

  • hyperse #1
    我看另一个问答里面相同的问题,老师的回答是:在执行代码的时候,Person=new class P{}()是赋值操作,先执行等号右侧代码,这时候Person还没有被赋值,所以Person为undefined,因此与P不相等,返回值为false 。 到底是哪一种呢? https://class.imooc.com/course/qadetail/205912
    2020-09-15 23:57:31
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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