===,==,Object.is()的不同
== 只比较值 如果类型不同,先转换类型再比较值
=== 既比较类型 又比较值 如果类型不同就会直接返回false
Object.is()是es6新增的方法,他与===大致相同,但是NAN=另一个NAN,Object.is()区分+0和-0
H5新特性
新增语义化标签
新媒体元素:新增标签 audio(音频) video(视频)source(多媒体资源)
新增input类型 email url date time month week number tel search color
新增表单属性 placeholder mutiple canvas新元素
BFC
块级格式化上下文 他是页面中一个独立的容器 容器中的元素不会影响到外面的元素
触发条件 根元素 即html 浮动元素 float 值为left right 重绘:改变元素的外观属性 如color backgroud-color
重排(回流):元素的规模尺寸,布局,隐藏改变时
null和undefined的区别
数据类型不一样,null的数据类型是对象,undefined的数据类型是undefined
null和undefined两者相等 但是当做全等比较时,两者不等
null代表空 代表空指针。undefined 是定义了没有赋值
事件委托
事件委托也叫事件代理,“事件代理”即是把原本需要绑定在子元素的响应事件(click、keydown…)委托给父元素,让父元素担当事件监听的职务。事件代理的原理是DOM元素的事件冒泡。
事件委托的优点
- 可以大量节省内存占用,减少事件注册,比如在ul上代理所有li的click事件。
- 可以实现当新增子对象时无需再次对其绑定(动态绑定事件)
常用的dom操作方法
map方法会改变原数组吗
不会改变原数组 会返回一个新数组
ES6 解构赋值怎么修改名字?
++在前和++在后的区别
...是浅拷贝还是深拷贝
浅拷贝
浅拷贝和深拷贝的区别和原理
基本数据类型和复杂数据类型的区别
字符串数组互相转化
字符串转数组 str.split('') Object.values(str) Array.from(str) [...str]
数组转字符串 arr.toString() arr.toLocaleString() join('=')
for of 和for in的区别
for in 得到对象的key 或者数组的下标 或字符串的下标
for of 是得到值 for of 不能用于对象
const obj = {
a: 1,
b: 2,
c: 3
}
for (let i in obj) {
console.log(i) //输出 : a b c
}
for (let i of obj) {
console.log(i) //输出: Uncaught TypeError: obj is not iterable 报错了
}
const arr = ['a', 'b', 'c']
// for in 循环
for (let i in arr) {
console.log(i) //输出 0 1 2
}
// for of
for (let i of arr) {
console.log(i) //输出 a b c
}