一、var f = foo||bar ,这行代码是什么意思?为什么要这样写?
或短路
如果 foo 为false、0、null、undefined、空串,就取bar的值
这是一种快速赋值的方法
二、简述你对 toString 与 valueOf 理解
toString是将任意对象、基本类型、字符串都转为字符串,其他都会重写toString
valueof会返回对象本身的原始值
三、描述new操作符的运行过程
new操作符的实现原理_izwell的博客-CSDN博客_new操作符原理
新建一个对象O,将O的__proto__
属性指向构造函数的原型属性prototype
绑定构造函数的执行上下文到O上,并执行构造函数得到返回值S
如果S是一个对象,new 操作符返回的就是这个S对象
如果S不是一个对象,new 操作符返回的就是O
四、Javascript 原型继承如何实现、原型链的 prototype 和__proto__的区别
https://www.jb51.net/article/81766.htm
五、js 延迟加载的方式有哪些?
JS延迟加载的几种方式_meijory的博客-CSDN博客_js延迟加载的方式有哪些?
js延迟加载,也就是等到页面加载完成之后再加载js文件,有助于提高页面加载速度
主要方式有defer属性、async属性、动态创建DOM方式、jQuery的getScript方法、setTimeout、把js文件放在文件底部
defer:
在<script>中设置deger属性,浏览器立即下载,延迟执行,适用于HTML4的外部脚本文件。
async:
在<script>设置async属性,不让页面等待脚本下载和执行,从而异步加载页面其他内容,适用于外部脚本文件
六、你使用过那些 Javascript 库,你使用过那些 Javascript 插件?
jQuery,moment、axios、awesome、echarts、validator、css-modal、
七、简单介绍一下,你所了解的前端框架及区别
Angular、React、Vue
相同点:都是渐进式框架,可以通过配套不同的工具实现更强大的功能;都是组件化开发,都能很好的解决分工与维护的问题;都是单向数据流
Vue特点:轻量级、双向数据绑定、指令、插件化、官方文档清晰易学
React特点:采用生命范式、模拟DOM,高效、灵活、速度快、跨浏览器兼容
Angular特点:模块功能强大、可以自定义指定、可以引入后端的东西(嵌入、注入、测试)
八、http 状态码有哪些?分别代表是什么意思?
HTTP的学习——状态码都有哪些之常见HTTP状态码_sun_977759的博客-CSDN博客_http状态码有哪些
1xx 临时响应
2xx 成功
3xx 重定向
4xx 客户端请求错误
5xx 服务器错误
常用的状态码如下:
200 OK 请求成功
301 资源移动,所求资源自动到新的URL,浏览器自动跳转到新URL
304 服务端资源与客户端上次请求一致,不需要重新传输
400 Bad Request 客户端发送错误请求
403 没有权限
404 Not Found 页面丢失、未找到资源
500 服务器内部出错
501 服务器内部出错,无法对请求提供服务
九、请谈谈你在前端开发过程中用过的调试工具
F12(元素、控制台、源代码、网络、性能、内存、应用程序、安全、性能评测)
断点
postman
十、谈谈 cookie 与 session 的区别
1-cookie数据存放在客户端浏览器,session数据存放在服务器上
2-cookie是不安全的,可以被欺诈,session是安全的
3-session会在一定时间内保存在服务器上,如果访问过大,会比较占用服务器性能,这个时候应当使用cookie
4-单个cookie保存的数据不能超过4k,大部分浏览器都限制一个站点最多保存20个cookie
5-cookie只能保存ascll字符串,session可以存取任何类型的数据
6-cookie的有效期较长(可以设置),session则是关闭浏览器就失效
7-cookie支持跨域访问,session不支持跨域访问
8-cookie需要浏览器支持,可以设置为本窗口及子窗口有效,或者设置为一切阅读器窗口都有效;session只能设置为本窗口及子窗口有效。
十一、下面的代码会输出什么?为什么?
var foo = 1;
function test(){
console.log(foo);
var foo = 2;
console.log(foo);
}
test();
undefined --因为变量提升;如果是let就变成死区
2 --局部变量foo被定义
十二、下面的代码会输出什么?为什么?
var User = {
count: 1,
getCount: function() {
return this.count;
}
};
console.log(User.getCount());
var func = User.getCount;console.log(func());
1
undefined --this指向的是window,在严格模式下会报错
十三、看下面代码,给出输出结果。如何让代码输出 1 2 3?
for(var i=1;i<=3;i++){
setTimeout(function(){
console.log(i);
},0);
};
444
如果要输出123,需要将var换成let 这样就形成了一个块级作用域/闭包