包含JS、CSS、React、浏览器等 前端经典面试题( 三 )


function test(){var aa = 0;var testSet = setInterval(function(){aa++;console.log(123);if(aa<10){clearInterval(testSet);}},20);var testSet1 = setTimeout(function(){console.log(321)},1000);for(var i=0;i<10;i++){console.log('test');}}test()输出结果:
test //10次undefined1233218、['1','2','3'].map(parseInt) 输出什么,为什么?参考答案输出:[1, NaN, NaN]

  • 首先让我们回顾一下,map函数的第一个参数callback:
var new_array = arr.map(function callback(currentValue[, index[, array]]) { // Return element for new_array }[, thisArg])这个callback一共可以接收三个参数,其中第一个参数代表当前被处理的元素,而第二个参数代表该元素的索引 。
  • 而parseInt则是用来解析字符串的,使字符串成为指定基数的整数 。parseInt(string, radix)接收两个参数,第一个表示被处理的值(字符串),第二个表示为解析时的基数 。
  • 了解这两个函数后,我们可以模拟一下运行情况
  1. parseInt('1', 0) //radix为0时,且string参数不以“0x”和“0”开头时,按照10为基数处理 。这个时候返回1
  2. parseInt('2', 1) //基数为1(1进制)表示的数中,最大值小于2,所以无法解析,返回NaN
  3. parseInt('3', 2) //基数为2(2进制)表示的数中,最大值小于3,所以无法解析,返回NaN
  • map函数返回的是一个数组,所以最后结果为[1, NaN, NaN]
9、Doctype作用? 严格模式与混杂模式如何区分?它们有何意义?参考答案Doctype声明于文档最前面,告诉浏览器以何种方式来渲染页面,这里有两种模式,严格模式和混杂模式 。
  • 严格模式的排版和 JS 运作模式是 以该浏览器支持的最高标准运行 。
  • 混杂模式,向后兼容,模拟老式浏览器,防止浏览器无法兼容页面 。
10、fetch发送2次请求的原因参考答案fetch发送post请求的时候,总是发送2次,第一次状态码是204,第二次才成功?
原因很简单,因为你用fetch的post请求的时候,导致fetch 第一次发送了一个Options请求,询问服务器是否支持修改的请求头,如果服务器支持,则在第二次中发送真正的请求 。

  • location.href-- 返回或设置当前文档的URL
  • location.search -- 返回URL中的查询字符串部分 。例如 http://www.dreamdu.com/dreamd... 返回包括(?)后面的内容?id=5&name=dreamdu
  • location.hash -- 返回URL#后面的内容,如果没有#,返回空 location.host -- 返回URL中的域名部分,例如http://www.dreamdu.com
  • location.hostname -- 返回URL中的主域名部分,例如http://dreamdu.com
  • location.pathname -- 返回URL的域名后的部分 。例如 http://www.dreamdu.com/xhtml/ 返回/xhtml/
  • location.port -- 返回URL中的端口部分 。例如 http://www.dreamdu.com:8080/xhtml/ 返回8080
  • location.protocol -- 返回URL中的协议部分 。例如 http://www.dreamdu.com:8080/xhtml/ 返回(//)前面的内容http:
  • location.assign -- 设置当前文档的URL
  • location.replace() -- 设置当前文档的URL,并且在history对象的地址列表中移除这个URL location.replace(url);
  • location.reload() -- 重载当前页面
history对象
  • history.go() -- 前进或后退指定的页面数
  • history.go(num); history.back() -- 后退一页
  • history.forward() -- 前进一页
Navigator对象
  • navigator.userAgent -- 返回用户代理头的字符串表示(就是包括浏览器版本信息等的字符串)
  • navigator.cookieEnabled -- 返回浏览器是否支持(启用)cookie
6、Cookie、sessionStorage、localStorage的区别参考答案共同点:都是保存在浏览器端,并且是同源的