1、数组方法pop() push() unshift() shift()
push 后面添加元素,个数不限,返回新数组的长度
pop 从后面删除一个元素,返回那个元素
unshift 从前面添加元素,个数不限,返回新数组的长度
shift 从前面删除一个元素,返回那个元素
2、javascript的typeof返回哪些数据类型
Object number function Boolean underfind
(注意这里没有null,null是一个空对象,是Object的类型。undefined隐形转换数字为NaN,不是任何值,不等于NaN本身。null隐形转换数字文0。强制转化都为NaN。)
3、split() join() 的区别
split() 字符串的方法,把字符串分割成数组 split(“,”)
join() 数组的方法,把数组连接成字符串 join(“--”)
4、输出的值是什么:
var arr = [1, 2, 3, 4, 5, 5] for (var i = 0; i setTimeout(function(){ console.log(i) }) //输出6次6。setTimeout()是异步操作。var定义变量是存在变量提升,//当i=6时循环停止,才开始执行6次console.log(i) }
for (let i = 0; i setTimeout(function(){ console.log(i) }) } //输出0 1 2 3 4 5 。let不存在变量提升,可以形成块级作用域
for (var i = 0; i setTimeout(function(){ console.log(arr[i]) }) } //输出6次undefined
for (let i = 0; i setTimeout(function(){ console.log(arr[i]) }) } //输出 1 2 3 4 5 5
5、前端有哪几种本地存储方式,简述各自的特点(请描述一下cookies,sessionStorage和localStorage的区别?)
前端有三种本地存储的方式:cookie、localStorage 、 sessionStorage
cookie---最大数据量为4kb左右,存储量小,可以设置有效期,默认为会话级别。是基于http的。
localStorage---有效期永久,存多了,不主动删除,会造成浏览器很卡。同源可以修 改localStorage的数据。
sessionStorage:有效期顶层窗口关闭钱,数据在页面会话结束的时候会被清除,属 于临时保存同一窗口的数据。最大容量有5M左右。
6、简述常见的http状态码
200 请求成功
304 服务器已经执行了请求,当文件没有变化 ,简单讲有缓存了。
404 Not Found
500 服务端错误
7、从输入URL到页面加载发生了什么?
1、DNS解析 (把域名解析为相应的ip地址)
2、TCP连接 (三次握手的过程)
3、发送HTTP请求
4、服务器处理请求并返回HTTP报文
5、浏览器解析渲染页面
6、连接结束 (断开连接过程是四次挥手的过程)
8、Promise构造函数是同步执行还是异步执行,那么 then 方法呢?
Promise构造函数是同步执行的,then方法是异步执行的
9、setTimeout、Promise、async/await 的区别?
事件循环(Event Loop)中分为宏任务队列和微任务队列
setTimeout的回调函数放到宏任务队列里,等到执行栈清空以后执行
promise.then里的回调函数会放到相应宏任务的微任务队列里,等宏任务里面的同步代码执行完再执行
async函数表示函数里面可能会有异步方法,await后面跟一个表达式。async方法执行时,遇到await会立即执行表达式,然后把表达式后面的代码放到微任务队列里,让出执行栈让同步代码先执行
补充:promise 是es6新增一种异步编程的方案
async/await是es7中新增的异步编程的方案。
经典案例:今日头条的面试题,执行的顺序
async function async1 () {
console.log('async1 start') // 2 await async2(); console.log('async1 end') //7}async function async2 () {
console.log('async2') //3}console.log('script start') // 1setTimeout(function () {
console.log('setTimeout') //8}, 0)async1();new Promise (function (resolve) {
console.log('promise1') //4 resolve();}).then (function () {
console.log('promise2') //6})console.log('script end') //5运行结果:1、 script start2、 async1 start3、 async24、 promise15、 script end6、 promise27、 async1 end8、 setTimeout
10、forEach、for in、for of三者区别
forEach:用来遍历数组,对数组中的每个元素执行一次提供的函数,不改变原数组,无返回值,undefined。
for in 一般常用来遍历对象或json。