网站首页 > 技术文章 正文
前言
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面试题,看看你都能回答的上来吗?
猜你喜欢
- 2025-06-24 晨光微醺时!2 道 JS 核心题漫谈,解锁面试小技巧
- 2025-06-24 js基础面试题92-130道题目(50道js面试题)
- 2025-06-24 3 个高级 JavaScript 面试问题(js面试题必问)
- 2025-06-24 晨光微暖时!2 道 JS 经典面试题拆解,开启惬意学习日
- 2025-06-24 JS面试题突破:谈谈 undefined 和 null ?
- 2025-06-24 9 个你可能不知道答案的常见 JavaScript 面试题
- 2025-06-24 19个基本的JavaScript面试问题及答案(都是实用技巧)免费送
- 2025-06-24 JavaScript篇面试题(js面试题基础)
- 2024-10-05 前端面试,你有必要知道的一些JavaScript 面试题(上)
- 2024-10-05 几道看起来代码量很少的Javascript笔试题,看看你会不会做?
你 发表评论:
欢迎- 586℃几个Oracle空值处理函数 oracle处理null值的函数
- 580℃Oracle分析函数之Lag和Lead()使用
- 567℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 564℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 560℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 553℃【数据统计分析】详解Oracle分组函数之CUBE
- 539℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 533℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)