前端面试笔记--JS篇
在这里本萌妹想把最近面试经历过的都记录下来,让自己更深刻理解,希望也能帮助同样在面试的你!
1.js数据类型?
string, number, boolean, array, object, null, undefined
2.写一个方法,计算字符串的字节长度?
var str = '我是萌逼';
var bytesCounts = 0;
for(var i = 0; i< str.length; i++){
var c = str.charAt(i);
if(/^[\u0000-\u00ff]$/.test(c)){
bytesCounts += 1;
} else {
bytesCounts += 2;
}
}
console.log(bytesCounts);
3.ajax跨域?
问题:跨域主要是由于浏览器的同源策略引起。
解决:
(1)jsonp;<script>具有跨域能力
客户端网页通过添加一个<script>元素=》向服务器请求json数据=》请求时接口地址作为脚本标签的src=>jsonp只能用于get。
(2)CORS,全球跨域资源共享,
原理:服务器A在响应头加上Access-control-Allow-Origin(权限控制允许来源),其他客户端就能向服务器A发送跨域请求。
(3)websocket;这是HTML5的新标签,是一种新协议,允许服务器主动向客户端发送信息。
4.闭包?以及闭包的应用场景?
闭包就是由函数创造的一个词法作用域,里面创建的变量被引用后,可以在词法作用环境之外被使用。
闭包通常用来创建内部变量,使得这些变量不能被外部随意修改。
注意:由于闭包会使得函数中的变量都保存在内存中,内存消耗很大,所以不能滥用闭包,
解决:将不使用的局部变量全局变量删除。
5.webpack?
webpack 是一种模块化方案,将js,css和图片等资源都当作模块来处理,提供一个入口文件,它会把该文件以及该文件所依赖的其他模块都打包成一个文件。
6.ajax?
ajax=>asynchronous javascript and XML;
一种创建交互网页应用的网页开发技术;
通过异步模式,提升了用户体验;
优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少带宽占用;
特点:实现动态不刷新(布局刷新);
核心:XMLHttpRequest对象;
7.箭头函数与非箭头函数?
(1)this;
普通函数:this总是代表它的直接调用者,默认情况下没找打直接调用者,则指window,使用call,apply,bind绑定的,this指的是绑定的对象。
箭头函数:默认指向定义时所处的对象。
(2)箭头函数不可以当做构造函数,也就是说不可以使用new,否则会抛出一个错误。
(3)箭头函数不可以使用arguments对象,该对象在函数体内不存在(可以使用...rest替代);
8.let和var?
(1)声明后未赋值,表现相同。
(2)使用未声明的变量,表现不同,let报错
(3)声明同一个变量时,let报错,
(4)变量作用域,let表现不同,let内部和外部不是同一个变量