JS高级复习

JS基础知识
1.JS的数据类型

基本数据类型

五大基本数据类型: undefined Number Boolean String Null 

// Js的数据类型
// Js的数据类型有5种 都可以用let声明;
let num = 3;//数值类型
let float = 3.00;//也可以声明小数
let string = 'String';// 声明字符串
let arr = [1, 2, 3, 4];//声明数组
let obj = {
    sex: '男',
    name: '张三'
}
//声明对象
let flag = true; // 声明布尔型变量

引用数据类型

 Object(对象) {Function Array Date RegExp等}

 2.双等和三等的区别

== 是比较二者的值,而 === 比较的是二者的值和类型

//  == 是在进行比较前先进行类型转换,转换为相同类型时在进行比较,
//而 === 更加严格不进行类型的转换直接对其进行比较
// 简言之: == 是比较二者的值,而 === 比较的是二者的值和类型

let num = 1;
let num1 = '1';
console.log(num == num1);  // true
console.log(num === num1); // false
3.let var const 三者的区别

平常在使用时,通常使用let、const 一般不使用var

// 1.var 具有变量提升,并且可以重复声明,只受函数作用域和全局作用域的影响
// 2.let 不具有变量提升,并且不可以重复声明,受块级作用域和函数作用域的影响
// 3.const 与 let 相似,但const 在声明时就需要被初始化,并且值不能更改
// 通常的变量有三种声明方法 var let const 
// 三者的区别
// var 属于全局变量可以先调用再声明可以重复声明有变量提升的特点
// eg
num = 3;
var num;
console.log(num);// 3
var num = 4;
console.log(num);// 4



// 但对于let const 而言都只能先声明再调用不可以重复声明
// num1 = 2;
// let num1; 
// console.log(num1);
//Cannot access 'num1' before initialization


let num1;
num1 = 5;
console.log(num1); // 5

// const 和 let 的区别
// const 主要声明的是静态变量,即声明后无法更改赋值
// 并且当const 一旦声明必须初始化(赋值)
// let 可以改变变量的值

// const num2; 
// Missing initializer in const declaration at internalCompileFunction

// const num2 = 4;
// num2 = 3;
// console.log(num2);// Assignment to constant variable.

let num2 = 0;
num2 = 5;
console.log(num2);// 5

 4.普通函数和箭头函数的区别
// 箭头函数没有自己的this对象,它的this是执行上下文的this
// 不可以当作构造函数使用,即不能使用new方法实例化对象
// 没有arguments
5.数组的基本方法

增删改查

// 增加数组
// 1.在数组的末尾添加一个或多个元素 push('1','2'...);
// 2.在数组的开头添加一个或多个元素 unshift('1','2'...); 返回数组长度
// 3.将两个或多个数组合并成一个新数组 concat();

删 


// 删除数组
// 1.在数组的末尾删除最后一个元素 pop();
// 2.在数组的开头删除第一个元素 shift();
// 3.delete 可以删除指定的元素,但不改变数组的长度,在删除的位置变为undefined

 改

// 改变数组
// 1.使用索引直接赋值
// 2.使用sort对数组进行排序
// 3. reverse 颠倒元素顺序
// 4. forEach
// 5.map 函数

查 

// 查找数组
// 1.返回指定元素第一次出现的索引值 indexOf()
// 2.返回指定元素最后一次出现的索引值 lastIndexOf()
// 3.返回满足指定元素的原数组元素 filter()
// 4.检测是否所有函数都满足指定条件 every()
// 5. 检测数组中是否有一个元素满足指定条件 some()
// 6.返回数组中满足指定条件的第一个元素 find();
// 7. 返回数组中满足指定条件的第一个元素的索引值 findIndex()
// 其他方法
// 数组的拼接
// 将数组中所有的元素拼接成一个字符串 join()
// 数组的截取
// 截取数组的一部分 slice()
// 数组的判断
// 判断是否为数组 isArray()
// 不改变原数组的方法
// slice(),map(),filter()
// 增改删一体 splice()
JS高级知识
1.事件冒泡和事件捕获

 事件冒泡:
 事件先从最具体的元素开始触发,然后逐级向父元素传播直到事件到达最顶层元素(通常是window)(从下向上传播)
 事件捕获
 事件先从最顶层的元素开始触发,然后逐级向父元素传播,直到事件到达最具体元素(从上向下传播)

2.localStorage、sessionStorage、cookie区别

共同点:他们都是储存在浏览器端,并且三者都会过期
不同点:
 1.失效的时间不同,localStorage和cookie的会到过了有效期失 而 sessionStorage 会在页面关闭时生效
 2. cookie 数据有path路径概念可以固定储存在某个路径下
 3. 储存大小不同,cookie适合储存小数据(4k),其他两个可以储存5M

3.JS闭包

 什么是闭包
 当一个嵌套的内部函数引用了嵌套的外部函数的变量/函数时,就产生了闭包
 闭包的常见的两种方式
 1.将内部函数作为返回值返回
 2.将外部函数的实参传递给内部函数使用
 闭包的优点
1.具有封装化和私有化,
 通过创建闭包可以将外部函数的变量和方法不与外界相冲突,保证了只有内部函数可以访问,提高了代码的可维护性
2.模块化开发
闭包可以用于模块化开发,避免变量全局污染,并且提供了对外界的访问限制,增加了代码的可重复利用性
 闭包的缺点
内存占用,内存泄漏(能不用就不用,用了就及时释放)
 释放 将内部函数成为垃圾对象,进行回收 fn = null;

 代码演示

function getnum() {
    let num = 1;
    function getDoubleNum() {
        console.log(num * 2);
    }
    getDoubleNum()
}
getnum()// 2;
// 常见的闭包形式
// 1.将内部函数作为返回值返回
function test() {
    let test = "this is a test";
    function addTest() {
        console.log('test :' + test);
    }
    return addTest;
}
let getTest = test();
getTest(); // test :this is a test
//  2.将外部函数的实参传递给内部函数使用
function num(num1, num2) {
    function getAdd() {
        if (num1) {
            console.log("num1存在", num1 + num2);
        }
    }
    getAdd()
}
num(1, 2);
4.内存泄漏怎么理解

 内存泄漏指的是在程序中分配的内存空间没有被正确释放,导致这些内存无法再被程序的其他部分使用, 进而占用了系统的内存资源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值