当前位置: 首页 > 后端技术 > Node.js

这道题原来是……

时间:2023-04-03 11:44:37 Node.js

这是博主遇到的面试题的加强版。我是一个前端菜鸟。如果你觉得太简单了,那只能证明你真的很优秀。你应该大声告诉你的朋友。classAnimal{constructor(name){this.props={name}}canFly(){functionfly(){returnthis.props.name==="bird"}if(fly()){console.log("fly")}else{thrownewError("flyfail")}}}varprops={name:"worm"}constbird=newAnimal("bird")try{console.log(bird.canFly())}catch(err){console.log(err)}如果你对此很熟悉的话,这道题其实并不算太难,容易混淆的元素太多了。如果你对这个的理解停留在第一层:输出fly如果是第二层:fly实际上失败了。..最后是控制台输出“cannotread'props'ofundefinedexpected?大致回答:brid实例调用canFly方法执行if语句中的fly函数,没有fly方法的对象引用,这个应该指向towindow,但是类声明类是严格模式的,在严格模式下,函数指向全局(比如window)this会变成undefined,所以没有props,所以报错直接终止,所以它被捕获了。