这篇文章将为大家详细讲解有关JavaScript中关于“这”的面试题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
在JavaScript中,<代码> 代码>是函数调用上下文。正是由于<代码> >代码的行为很复杂,所以在JavaScript面试中,总是会问到有关,这<代码> 代码>的问题。
做好的准备面试的方法是练习,所以本文针对<代码> 代码>关键字整理了7个有趣的面试:
注意:下面的JavaScript代码段以非严格模式运行。
<强>目录:强>
<李>
引用>问题1:变量vs属性
李> <李>问题2:猫的名字
李> <李>问题3:延迟输出
李> <李>问题4:补全代码
李> <李>问题5:问候与告别
李> <李>问题6:棘手的长度
李> <李>问题7:调用参数
李>相关教程推荐:JavaScript视频教程
<强>问题1:变量vs属性强>
以下代码会输出什么:
const object =, { ,,信息:& # 39;你好,,世界! & # 39; getMessage(),{才能 ,,,const message =, & # 39;你好,,地球! & # 39;; ,,,return this.message; ,,}}; console.log (object.getMessage());,//,输出什么? ?<强>答案:强>
输出:<代码> & # 39;你好,世界! & # 39;代码>
<代码> object.getMessage() 代码>是一个方法调用,这就是为什么方法中的<代码> 代码>等于<代码> 代码>对象的原因。
方法中还有一个变量声明<代码> const消息=& # 39;你好,地球! & # 39;> 代码,但这个变量不会影响<代码>。消息> 代码的值。
<强>问题2:猫的名字强>
以下代码会输出什么:
function 宠物(名字),{ this.name 才能=,名称; this.getName 才能=,(),=祝辞,this.name; } const cat =, new 宠物(& # 39;蓬松# 39;); console.log (cat.getName());,//,输出什么? ? {const getName },=,猫; console.log (getName());,,,,,//,输出什么? ?<强>答案:强>
输出:<代码> & # 39;蓬松# 39;> 代码和,<代码> & # 39;蓬松# 39;代码>
当一个函数被当作构造函数调用时(<代码>新宠物(& # 39;蓬松# 39;)> 代码),构造函数内部的 这等于构造的对象。
<代码> 代码>宠物构造函数中的<代码> this.name=> 代码名称,表达式在构造的对象上创建<代码> 代码>名称属性。
<代码>。getName=()=比;this.name> 代码,在构造的对象上创建方法<代码> getName> 代码。而且由于使用了箭头函数,箭头函数中的 这等于外部作用域中的<代码> 代码>,也就是构造函数<代码>宠物代码>。
调用<代码> cat.getName() 代码>和<代码> getName() 代码>会返回表达式<代码> this.name> 代码,其计算结果为<代码> & # 39;蓬松# 39;代码>。
<强>问题3:延迟输出强>
以下代码输出什么:
const object =, { ,,信息:& # 39;你好,,世界! & # 39; logMessage才能(),{ ,,,console.log (this.message);,//,输出什么? ? ,,} }; setTimeout (object.logMessage, 1000);<强>答案:强>
延迟1秒钟后,输出:<代码>定义代码>
尽管,<代码> setTimeout() 代码>函数使用<代码>对象。logMessage> 代码作为回调,但仍把<代码>对象。logMessage> 代码作为常规函数而非方法调用。
在常规函数调用期间,这 等于全局对象,即浏览器环境中是<代码> 代码>窗口。
这就是为什么<代码> logMessage 代码>方法内的<代码> console.log (this.message) 代码>输出<代码>窗口。消息> 代码,即<代码>未定义的代码>。
<强>问题4:补全代码强>
如何调用logMessage函数,让它输出<代码>“你好,世界!“> 代码。
const object =, { ,,信息:& # 39;你好,,世界! & # 39; }; function logMessage (), { console.log才能(this.message);,//,=祝辞,“你好,世界!“ }//,把你的代码写在这里.....<强>答案:强>
至少有3种方式,可以做到:
const object =, { ,,信息:& # 39;你好,,世界! & # 39; }; function logMessage (), { console.log才能(this.message);,//,=祝辞,& # 39;,你好,世界! & # 39; }//,使用,func.call(),方法 logMessage.call(对象);//,使用,func.apply(),方法 logMessage.apply(对象);//,使用函数绑定 const boundLogMessage =, logMessage.bind(对象); boundLogMessage ();JavaScript中关于“这”的面试题