1.JS中localStorage和sessionStorage的区别
localStorage:永久存储在本地,适合长期保存在本地的数据
sessionStorage:会话级的存储,敏感账号,用于一次性登录的
相同点:
都是保存在浏览器端
不会把数据自动发送给服务器,仅在本地保存
只能存储字符串,可以将对象JSON.stringfy()编码之后进行存储
不同点:
存储大小限制不同:sessionStorage存储的大小为5m,localStorage存储大小20m
数据有效期不同:localStorage:始终有效,窗口关闭或者浏览器关闭,一直保存,可以用来持久保存数据
sessionStorage仅在当前浏览器窗口关闭前有效,会话级别的存储
作用域不同:sessionStorage:在不同的浏览器窗口不会进行共享,只有在同一个页面中
localStorage:在所有的同源的窗口下是可以共享的
2.JS中清空数组的方法
1.splice
第一个参数:规定添加或者删除元素的位置
第二个参数:要删除元素的数量
var arr = [1,2,3,4,5]
arr.splice(0,arr.length)
2.通过length:数组的长度
arr.length=0
3.赋值为[]
arr = []
3.ES6对箭头函数的理解
1.箭头函数内的this是静态的,总是指向定义时所在的对象,而不是调用时,并且this的指向是不可以改变的
2.this始终指向函数声明时所在作用域下的this的值
3.箭头函数不能当作构造函数,也就是不可以用new命令,否则报错 -->new的执行过程,首先创建一个空对象,让箭头函数中的this指向所创建的空对象,而箭头函数中的this指向定义时所在的作用域下的this,不能改变this指向的对象,所以不能使用new命令
4.箭头函数不存在arguments对象,即不能使用伪数组去接收参数,可以使用rest参数代替
不适用的场景:与this有关的回调,事件回调,对象的方法回调
适用场景:与this无关的回调,定时器,数组的方法回调
4.JS有哪些数据类型,区别是什么
基本数据类型:string/number/boolean/null/undefined/symbol --代表创建之后独一无二并且不可变的数据类型
引用数据类型:object/function/array (归为Object)
区别:
1.声明变量时的存储分配
基本数据类型存储在栈中, var a = 10
引用数据类型存储在堆中, var arr = [1,2,3,4,5]
2.不同的内存分配机制带来了不同的访问机制
不可以直接访问堆内存空间的位置以及直接操作堆内存空间,只能操作对象在栈内存中引用地址
基本数据类型直接访问到,引用数据类型访问引用地址,根据引用地址找到堆中实体
3.复制变量时的不同
基本数据类型: var a =1,var b =a ,将原始值的副本赋值新的变量
引用数据类型: var obj = {name:'张三'},var obj1 = obj ,将引用地址赋值给新的变量
5.ES6的新特性有哪些?
ES6是ECMAScript 2015的简称,是JavaScript的一个重要版本。它引入了许多新的语言特性和API,使得JavaScript更加现代化、易读、易维护和易扩展。以下是ES6的一些新特性:
- let和const关键字:用于声明块级作用域的变量和常量。
- 箭头函数:一种更简洁的函数定义语法,可以自动绑定this关键字。
- 模板字符串:一种更方便的字符串拼接语法,支持多行字符串和变量插值。
- 解构赋值:一种更方便的变量赋值语法,可以从对象或数组中提取值并赋给变量。
- 默认参数:一种更方便的函数参数默认值语法,可以为函数参数设置默认值。
- 展开运算符:一种更方便的数组和对象展开语法,可以将数组或对象展开为单独的元素。
- 类和继承:一种更方便的面向对象编程语法,可以使用class关键字定义类和继承关系。
- 模块化:一种更方便的代码组织和复用语法,可以使用import和export关键字导入和导出模块。
- Promise:一种更方便的异步编程语法,可以使用Promise对象处理异步操作和错误。
- Generator:一种更方便的迭代器语法,可以使用function*关键字定义生成器函数和yield关键字生成值。