js考题-基础篇(1)

2024-02-20 11:32:08发布
158

1. 延迟加载js有哪些方式?

延迟加载:async、defer
例如:<script async src="script.js"></script>

区别
defer:等html全部解析完成,才会执行js代码,按顺序执行js脚本
async:async是和html解析同步的,不按顺序执行js脚本(谁先加载完谁先执行)


2. js的数据类型有哪些?

string,number,null,undefined,boolean,object,bigInt,symbol


3. null和undefined的区别

null      :一般是给引用类型数据用的;
undefined :一般是给基本数据类型用的;

console.log( Number(null) ) // 0
console.log( Number(undefined) ) // NaN


4. ==和===有什么不同

== :比较的是值
=== :除了比较直,还会比较类型

例子:
console.log(1 == '1') // true
console.log(true == 1) // true
console.log(null == undefined) // true
console.log([1,2] == '1,2') // true

上面的例子都是通过valueOf隐式转换的,可以通过重写valueOf来证明,如 :
Object.prototype.valueOf = function () { // 这里会被调用
    alert(1)
}
console.log(1 == '1')
console.log(true == 1)
console.log(null == undefined)
console.log([1,2] == '1,2') // 这里输出false了


5. JS的变量提升是什么?

用es5的var来定义变量,不管变量定义的位置是在哪,程序运行之前都会把该变量放到最前面,并且初始化该值为undefined,然后在判断是否有值,有值则赋值,否则保持为undefined

例子:

console.log(myName)
var myName = 'tom'

输出undefined
,上面的代码的初始化过程是这样的:

var myName = undefined // 把var定义的变量放到最前面
console.log(myName) // 输出undefined
myName = 'tom' // 最后是赋值


6. typeof null 和 typeof NaN的结果是什么

typeof null  // object
typeof NaN   // number NaN代表不能表示的数字,实际上还是数字


7. setTimeout和setInterval最小执行时间是多少?

setTimeout最小执行时间是4ms,如果少于4ms,则会把时间改成4ms
setInterval最小执行时间是10ms,如果少于10ms,则会把时间改成10ms


8. cookie、sessionStorage、localStorage的区别

总体来说有三个区别
1、存储的时间有效期不同
2、存储的大小不同
3、与服务端的通信的差异

存储的时间有效期不同
cookie在有效期失效前一直有效
sessionStorage的有效期是仅保持在当前页面,关闭当前会话页或者浏览器后就会失效
localStorage的有效期除非人工手动删除,否则一直存在。关闭当前会话页或者关闭浏览器是依然存在的。

存储的大小不同
cookie的存储量较小,存储容量是4kb左右
localStorage和sessionStorage的存储容量是5Mb,不同的浏览器有一些差异不同

与服务端的通信的差异
localStorage和sessionStorage是不会进行服务器通信的,他们只会在客户端进行数据的保存。
cookie会参与到与服务端的通信中,一般会携带在http请求的头部中,会消耗一部分带宽。一般可用于验证登陆者信息的凭证。


9. var、let、const有什么区别?

1. 作用域不同,var是全局作用域,而let是块级作用域
2. var有变量提升,let没有变量提升
3. var可以重复声明,let不可以
4. let和const主要区别是:const声明的时候不可赋值,而且不以重新赋值,而let可以


10. 数组常用的方法

push // 末尾添加元素
pop // 删除末尾元素
unshift // 开头添加元素
shift // 删除开头元素
slice // 截取数组中的
splice // 删除、插入、替换


11. get和post区别

1. 从字面上说,get是用来从服务器上获取数据,而post是向服务器提交数据

2. get请求的参数是放在url里的,而post是放在请求体里的

3. get请求因为请求参数是放在url里面,而url的长度是受限的,它最大的长度只支持2048个字符。而post则没有这个问题

4. get请求的请求参数放在url里,安全性较差。post请求参数放在请求体里,安全性较好

5. get请求可以被浏览器缓存,而post请求不会


12. 基本数据类型和引用数据类型的区别

基本数据类型包括:String、Number、Boolean、undefined、null
引用数据类型包括:Object、Function、Array、Data ...
区别
基本数据类型是保存在栈内存当中,保存的就是一个具体的值
引用数据类型是保存在堆内存当中,保存的是一个引用类型的数据的地址,假如声明两个引用类型同时指向了一个地址的时候,修改其中一个,那么另外一个也会改变


13. es6的新增特性有哪些?举例说明下

1. 新增块级作用域

2. 新增定义类的语法糖(class)

3. 新增了一种基本数据类型(symbol)

4.  新增了结构赋值

5. 新增了函数参数的默认值

6. 给数组新增了API

7. 对象和数组新增了扩展运算符

8. Promise

9.  新增了模块化(import,export)

10. 新增了set和map数据结构

11. 新增了generator

12. 新增了箭头函数

13. 新增了模板字符串


14. http协议请求方式

GET、POST、PUT、DELETE、OPTIONS、HEAD、TRACE、CONNECT


15. JS字符串常用的方法

includes
indexOf
substr
replace
split
toLowerCase
trim


16. 原生ajax

请参考这篇文章: https://blog.csdn.net/QQ408896436/article/details/79118011


17. 防抖与节流

请参考这篇文章: http://111.230.246.226:8080/article/261


18. Fetch和Axios区别

1.兼容问题,Axios是基于xmlhttprequest的,所以兼容老版本浏览器,而fetch是基于es6的,兼容性不是很好。
2.传递数据的方式不同,Axios是放到data属性里,以对象的方式进行传递,而Fetch则是需要放在body属性中,以字符串的方式进行传递
3.axios提供了拦截件,fetch没有

请参考这篇文章: http://111.230.246.226:8080/article/332


19. 同源策略指的是什么?

请参考这篇文章: http://111.230.246.226:8080/article/334