面试题JavaScript03【2021-10】

一、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__的区别

        javascript 原型继承介绍_360问答

        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、

七、简单介绍一下,你所了解的前端框架及区别

        web前端三大主流框架的对比 - 以德为先 - 博客园

        对比其他框架 — Vue.js

        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 这样就形成了一个块级作用域/闭包

猜你喜欢

转载自blog.csdn.net/weixin_43961652/article/details/121219452