文章目录
instance of和type of的区别
共同点
常用来判断变量是否为空或者变量是什么类型的
区别
instance of是用来判断一个变量是否是某个对象的实例
a instance of b
type of是一元运算,放在一个运算数之前,运算数可以是任意类型
它的返回值是一个字符串,字符串表明运算数的类型,对于Array,Null这类只返回object
forEach和map的区别
共同点
都是循环遍历一个数组,方法里每次执行匿名函数都支持三个参数,item(当前每一项),index(索引值),arr(原数组)
区别
1.forEach() 方法不会返回执行结果,而是undefined。
也就是说,forEach()会修改原来的数组。而map()方法会得到一个新的数组并返回。
arr.forEach((value,key) => {
return arr[key] = value * value;
})
let list = arr.map(value=>{
return value * value;
})
2.forEach() 的执行速度小于map() 的执行速度
3.map因为返回数组所以可以链式操作,foreach不能;
4.map里可以用return ,而foreach里用return不起作用,foreach不能用break,会直接报错;
for of和for in的区别
for…in 循环主要是为了遍历对象而生,不适用于遍历数组
for…of 循环可以用来遍历数组、类数组对象,字符串、Set、Map 以及 Generator 对象
Call 和 apply,bind 的区别
共同点: 都可以实现函数内部this被我们指定
不同点: call/apply 会让函数执行的
call后面参数是依次逗号分隔传入
apply:一个参数数组,数组成员是依次传入
bind 不会执行前面的函数!返回值:新的函数 和原来那个函数长的一样,内部this已经被我们固定
undeclared 与 undefined 的区别
undefined :声明了变量,但是没有赋值。
undeclared:没有声明变量就直接使用。
var a;
//undefined
c;
//undeclared
获取DOM元素的方法
注:document可以换成dom节点,那么就是搜索范围就是dom节点的子节点内
方法 | 描述 | 返回类型 |
---|---|---|
document.getElementById(id) | 通过id获取dom | 符合条件的dom对象 |
document.getElementsByTagName(tagName) | 通过标签名获取dom | 符合条件的所有dom对象组成的类数组 |
document.getElementsByClassName(class) | 通过class获取dom | 符合条件的所有dom对象组成的类数组 |
document.getElementsByName(name) | 通过标签的属性name获取dom | 符合条件的所有dom对象组成的类数组 |
document.querySelector(选择器) | 通过选择器获取dom | 符合条件的第一个dom对象 |
document.querySelectorAll(选择器) | 通过选择器获取dom | 符合条件的所有dom对象组成的类数组 |
操作DOM元素方法
方法 | 描述 |
---|---|
createElement | 创建一个标签节点 |
createTextNode | 创建一个文本节点 |
cloneNode(deep) | 复制一个节点,连同属性与值都复制,deep为true时,连同后代节点一起复制,不传或者传false,则只复制当前节点 |
createDocumentFragment | 创建一个文档碎片节点 |
appendChild | 追加子元素 |
insertBefore | 将元素插入前面 |
removeChild | 删除子元素 |
replaceChild | 替换子元素 |
getAttribute | 获取节点的属性 |
createAttribute | 创建属性 |
setAttribute | 设置节点属性 |
romoveAttribute | 删除节点属性 |
element.attributes | 将属性生成类数组对象 |
防抖和节流
防抖
频繁去触发一个事件,但是只触发最后一次。以最后一次为准
场景
1、电脑息屏时间,每动一次电脑又重新计算时间
2、input框变化频繁触发事件可加防抖
3、频繁点击按钮提交表单可加防抖
节流
频繁去触发一个事件,但是只能每隔一段时间触发一次
场景
1、滚动频繁请求列表可加节流
2、游戏里长按鼠标,但是动作都是每隔一段时间做一次
箭头函数和普通函数的区别
1、外形不同:箭头函数使用箭头定义,普通函数中没有。
2、 箭头函数全都是匿名函数:普通函数可以有匿名函数,也可以有具名函数
3、箭头函数不能用于构造函数:普通函数可以用于构造函数,以此创建对象实例。
4、箭头函数中 this 的指向不同:在普通函数中,this 总是指向调用它的对象,如果用作构造函数,它指向创建的对象实例。
5、箭头函数不具有 arguments 对象:每一个普通函数调用后都具有一个arguments 对象,用来存储实际传递的参数。但是箭头函数并没有此对象。
6、其他区别:箭头函数不具有 prototype 原型对象。箭头函数不具有 super。箭头函数不具有 new.target
生活片段
八里沟