网站首页 > 技术文章 正文
前言
Javascript在前端开发中的必要性不言而喻,几乎每一个前端开发者在面试过程中都会被问到Javascript部分的问题。之前有的文章我也总结过一些JS的面试题,今天我们继续来看几道JS面试题,看看你都能回答的上来吗?
Javascript
题目1-Ajax执行流程
现在前端框架层出不穷,对于Ajax请求也都是直接封装好,我们只要会用就行。但是在面试的过程中往往会考察基础知识,让你去说出Ajax请求的原始模样,接下来我们就看看它的原始执行过程吧。
创建XMLHttpRequest对象
由于浏览器的差异性,创建Ajax对象时需要用到不同的方法。
我们首先考虑低级IE浏览器,再考虑IE高级浏览器和非IE浏览器,这里提供一个比较通用的封装方法,如下所示。
创建XMLHttpRequest对象
发送请求
当成功创建一个XMLHttpRequest对象后,便可以发送Ajax请求,这里同样提供一个封装后的方法。
发送请求
执行回调函数
当Ajax请求发送并执行完毕后,服务端会响应数据,这时需要执行回调函数处理响应的数据,回调函数即上述代码中的callback。
在回调函数中,通过readyState和status来判断请求是否成功。其中readyState的值所表示的不同意义如下图所示。
readyState值
status值与HTTP请求的状态码一致,例如200表示请求成功,404标识请求不存在,500表示服务端错误等等。
我们可以看看回调函数中的一些常用写法。
回调函数
以上过程就是Ajax请求的整体执行流程,了解基础后就可以很容易的进行Ajax请求封装啦。
题目2-自执行函数
什么是自执行函数?
自执行函数是通过创建一个匿名函数,然后立即调用这个匿名函数的一种函数写法。
自执行函数的好处
由于自执行函数独立的作用域,可以防止创建的变量进入到全局作用域,能够避免各种类库的变量污染。同时利用立即执行函数的特性,可以避免很多条件判断的处理。
自执行函数写法
首先我们来看这样一种写法。
写法1
上述的这种写法并不是自执行函数的写法,因为()前面的部分是被当做了函数声明,并不是一个表达式,解析器不会把它当做一个函数执行,因此会报错。
正确的写法其实是以下几种。
在最前最后加上括号
将上述语句做下简单的调整就可以得到第一种写法,即在整个语句最前最后加上括号。
正确写法1
这是jslint推荐的写法,可以提醒开发者,这段代码是一个整体。
但是这种写法有一个隐藏缺陷,就是对于某些不喜欢在代码行末尾加分号的开发者来说,会产生一些bug。
隐藏bug
上述的代码会执行alert方法,但是会报一个1未定义的错误,这就是由于上下两段代码被当做一个整体。因此这也提醒大家在写代码时需要保持结尾加分号的习惯。
function外加括号
在function外加上一个括号,然后通过后面的括号表示立即执行。
正确写法2
上述写法相比于写法1,更易于理解,可以简单的理解为左边定义函数,右边执行函数。但是少了一些代码整体性的好处。
使用运算符(!, +)或者void关键字
以下这三种方法都是对的。
正确写法3
总结
今天这篇文章主要讲解了两道常见的Javascript面试题,看看你都能回答的上来吗?
猜你喜欢
- 2024-10-05 前端面试,你有必要知道的一些JavaScript 面试题(上)
- 2024-10-05 几道看起来代码量很少的Javascript笔试题,看看你会不会做?
- 2024-10-05 前端面试题《JS基础》 前端面试 js
- 2024-10-05 前端面试题JavaScript 前端面试题目100及最佳答案
- 2024-10-05 day6:前端面试题(js) js前端面试题及答案
- 2024-10-05 2023年最新的JavaScript面试题 锦屏县2023年幼儿园面试题
- 2024-10-05 20个基本的JavaScript面试问题及答案
- 2024-10-05 逐渐深入的Javascript面试题,看看你能过几关?
- 2024-10-05 谷歌面试7个简单又棘手的前端JavaScript面试题
- 2024-10-05 day10:前端面试题(js) 前端面试题及答案 知乎
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)