js用递归遍历多维数组_js面试题更新之40

19a91af25e284e9d039a89ac7d36837e.png

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。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值