问得最多的十个JavaScript前端面试问题
我知道有很多人不同意这种类型的面试。其实不管你喜不喜欢,你都得接受。尤其当你是自学的,而且要申请第一份工作时。
5个经典的前端面试问题
问题1:Scope作用范围
考虑下面的代码:
(function() { var a = b = 5;})(); console.log(b);
什么会被打印在控制台上?
回答
上面的代码会打印 5。
这个问题的诀窍是,这里有两个变量声明,但 a 使用关键字var声明的。代表它是一个函数的局部变量。与此相反,b 变成了全局变量。
这个问题的另一个诀窍是,它没有使用严格模式 ('use strict';) 。如果启用了严格模式,代码就会引发ReferenceError的错误:B没有定义(b is not defined)。请记住,严格模式,则需要明确指定,才能实现全局变量声明。比如,你应该写:
(function() { 'use strict'; var a = window.b = 5;})(); console.log(b);
问题2:创建“原生”(native)方法
给字符串对象定义一个repeatify功能。当传入一个整数n时,它会返回重复n次字符串的结果。例如:
console.log('hello'.repeatify(3));
应打印 hellohellohello。
回答
一个可能的实现如下所示:
String.prototype.repeatify = String.prototype.repeatify || function(times) { var str = ''; for (var i = 0; i < times; i++) { str += this; } return str;};
现在的问题测试开发者有关JavaScript继承和prototype的知识点。这也验证了开发者是否知道该如何扩展内置对象(尽管这不应该做的)。
这里的另一个要点是,你要知道如何不覆盖可能已经定义的功能。通过测试一下该功能定义之前并不存在:
String.prototype.repeatify = String.prototype.repeatify || function(times) {/* code here */};
当你被要求做好JavaScript函数兼容时这种技术特别有用。
问题3:声明提升(Hoisting)
执行这段代码,输出什么结果。
function test() { console.log(a); console.log(foo()); var a = 1; function foo() { return 2; }} test();
回答
这段代码的结果是 undefined 和 2。
原因是,变量和函数的声明都被提前了(移到了函数的顶部),但变量不分配任何值。因此,在打印变量的时候,它在函数中存在(它被声明了),但它仍然是 undefined 。表示换句话说,上面的代码等同于以下内容:
function test() { var a; function foo() { return 2; } console.log(a); console.log(foo()); a = 1;} test();
问题4:this在JavaScript中如何工作的
下面的代码会输出什么结果?给出你的答案。
var fullname = 'John Doe';var obj = { fullname: 'Colin Ihrig', prop: { fullname: 'Aurelio De Rosa', getFullname: function() { return this.fullname; } }}; console.log(obj.prop.getFullname()); var test = obj.prop.getFullname; console.log(test());
回答
答案是Aurelio De Rosa和John Doe。原因是,在一个函数中,this的行为,取决于JavaScript函数的调用方式和定义方式,而不仅仅是看它如何被定义的。
在第一个 console.log()调用中,getFullname() 被调用作为obj.prop对象的函数。所以,上下文指的是后者,函数返回该对象的fullname。与此相反,当getFullname()被分配到test变量时,上下文指的是全局对象(window)。这是因为test是被隐式设置为全局对象的属性。出于这个原因,该函数返回window的fullname,即定义在第一行的那个值。
问题5:call() 和 apply()
现在让你解决前一个问题,使最后的console.log() 打印 Aurelio De Rosa。
回答
该问题可以通过强制使用 call() 或者 apply() 改变函数上下文。在下面我将使用call(),但在这种情况下,apply()会输出相同的结果:
console.log(test.call(obj.prop));
转载于:https://www.cnblogs.com/libin-1/p/5940896.html
问得最多的十个JavaScript前端面试问题相关推荐
- JavaScript前端面试常考算法模板
一.二分查找 使用条件 排序数组 (30-40%是二分) 当面试官要求你找一个比 O(n) 更小的时间复杂度算法的时候(99%) 找到数组中的一个分割位置,使得左半部分满足某个条件,右半部分不满足(1 ...
- 前端面试官常问javaScript编程题,隔壁王大爷看了都会了
目录 1.数组排序. 2.数组元素的去重: 3.用递归的方法求数组的求和: 4.防抖节流的思路. 5.深拷贝.浅拷贝: 6.做一个10秒的倒计时: 7.setTimeout()和setInterval ...
- 前端vue适配不同的分辨率_前端面试时,被问到项目中的难点有哪些?
在每个前端求职者的面试过程中,一定都有过被面试官问到项目中的难点,而答不上来的情况.为了让大家在前端面试前准备得更加充足,小编准备了一些易被忽视且难度较高的前端面试题,希望可以帮助大家更加顺利完成求职 ...
- 前端面试+学习笔记(HTML+CSS+JavaScript+ES6+Vue+NodeJs)
前端面试+学习笔记(HTML+CSS+JavaScript+ES6+Vue+NodeJs) 一. HTML 1. 盒子模型 是什么:每个元素被表示为一个矩形的盒子,有四个部分组成:内容(content ...
- 那些巨头公司的前端面试都喜欢问些什么?
在过去的几年里,我在亚马逊和雅虎面试过很多专注于前端开发的Web开发者和软件工程师,在这篇文章中,我想分享一些面试技巧,帮助候选人为面试做好准备. 免责声明--本文并非旨在列出在前端面试中可能会被问到 ...
- 前端面试被问到性能优化该肿么办!
性能优化1 前端面试被问到性能优化该肿么办! 1.1 页面重构怎么操作? 网站重构:在不改变外部行为的前提下,简化结构.添加可读性,而在网站前端保持一致的行为. 也就是说是在不改变UI的情况下,对网站 ...
- 世界顶级公司的前端面试都问些什么
在过去的几年里,我在亚马逊和雅虎面试过许多前端工程师.在这篇文章中,我想分享一些技巧,帮助大家做好准备. 免责声明: 本文的目的并不是为你列出在前端面试中可能会被问到的问题,但是可以将其视为知识储备. ...
- 2022前端面试必问的几个小问题,你学费了吗?
写在前面 CSDN话题挑战赛第1期 活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f 参赛话题:前端面试宝典 话 ...
- 前端面试官问闭包,怎样回答脱颖而出
闭包这个话题一直都是前端面试的重点,下面我将结合自己的春招面试经验,关于闭包这个问题讲讲技术面试官会对它进行怎么一个提问? 1.闭包是什么? 闭包是js的一种语法特性. 闭包就是能够读取其他函数内部变 ...
最新文章
- Python设计模式-单例模式
- 《Effective Java》 读书笔记(持续更新)
- 一个可供中小团队参考的微服务架构技术栈
- android怎样添加图片锐化功能,如何在android处理图片(图像二值化锐化转换格式).doc...
- Android 获取触摸点坐标,判断滑动方向,滑动距离,滑动速度
- aix查看lv_Aix 添加VG,LV并挂载使用
- ThreadLocal和线程同步机制的对比
- c++ 排列组合_省考行测数量关系的老大难,排列组合的基本类型题及秒杀技巧...
- 网页设计太麻烦?15款免费优质Bootstrap UI工具包助你效率倍增!
- Ubuntu12.04上编译PlateGatewayQt
- 手机团购,团购市场的下一引爆点
- 智能优化算法应用:基于麻雀搜索算法的积分计算 -附代码
- python socket清空接受区_用 Python 开发一个 「聊天室」
- centos下修改mysql root密码
- 任学堂说科技:穿越计算机迷雾,从零开始构建计算机
- MES管理系统基础知识
- [手机Linux]一,线刷小米6到开发版,获取root权限
- 性能测试结果分析结果
- 防止ACCESS数据库被下载的一个通用解决方法:
- 《Python程序设计》实验四 Python综合实践实验报告
热门文章
- java 集成grizzly_java – 在Grizzly上使用JaaS和Jersey
- create react app 在start后不清空terminal
- 网络营销中一旦网站改版需要遵循哪些网络营销原则呢?
- 网络推广外包——竞价账户网络推广外包时怎样进行关键词推广?
- 404页面设计技巧性分享不容错过!
- 网站排名好却没流量到底是什么环节出了问题?
- 网站建设中的五大常见问题
- irobot擦地机器人故障_iRobot擦地机器人:只会擦地并不“奢侈”
- dubbo k8s 服务发现_服务化改造实践(二)| Dubbo + Kubernetes-阿里云开发者社区
- Android换肤逻辑