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

来源:3-3 类表达式

慕前端5592812

2019-08-22 14:21:42

const Person = new class P{

    constructor () {

        P.a =1;

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

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

    }

}();


写回答

2回答

好帮手慕码

2020-09-16

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

http://img.mukewang.com/climg/5f616a8009cfc0ca05520050.jpg

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

祝学习愉快~

0

好帮手慕码

2019-08-22

同学你好!

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

http://img.mukewang.com/climg/5d5e510100011dd806790211.jpg

效果:

http://img.mukewang.com/climg/5d5e52ef0001ee2007800245.jpg

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

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

0
hyperse
h 我看另一个问答里面相同的问题,老师的回答是:在执行代码的时候,Person=new class P{}()是赋值操作,先执行等号右侧代码,这时候Person还没有被赋值,所以Person为undefined,因此与P不相等,返回值为false 。 到底是哪一种呢? https://class.imooc.com/course/qadetail/205912
h020-09-15
共1条回复

0 学习 · 10739 问题

查看课程