var 和 let const 的区别
- var ES5 语法,变量,有变量提升,无块级作用域
- let ES6 语法,变量,可修改,有块级作用域,无变量提升
- const ES6 语法,常量,不可修改,有块级作用域,无变量提升
变量提升:js 在刚开始加载时,会先“统计” var 定义的变量,但并未赋值。
console.log(a) // undefined
var a = 10
函数声明和函数表达式的区别
- 函数声明: function fn () {…}
- 函数表达式: const fn = function () {…}
- 函数声明会提前预加载,函数表达式不会
数组API
split() 和 join()
const a = 'a-b-c'.split('-')
console.log(a);
const b = ['a', 'b', 'c'].join('-')
console.log(b);
pop(), push(), shift(), unshift()
pop() : 删除数组最后一个元素
shift() : 删除数组第一个元素
push() : 在数组最后插入元素
unshift() : 在数组最前面插入元素
纯函数和非纯函数
纯函数:1. 不改变原数组(没有副作用)2. 返回一个数组
concat
map
filter
slice非纯函数:改变了原数组
push pop shift unshift
forEach
some every
reduce
splice
经典的一道题:
[10,20,30].map(parseInt)
相当于=>
[10,20,30].map((num, index) => {
return parseInt(num, index)
})
函数 call 和 apply 的区别
fn.call(this, p1,p2,p3)
fn.apply(this, arguments)
事件委托,事件代理
e.stopPropagation() // 阻止冒泡
e.preventDefault() // 阻止默认行为
new Object() 和 Object.create() 的区别
- {} 等于 new Object(), 原型 Object.prototype
- Object.create(null) , 没有原型
- Object.create({...}),可指定原型
什么是 json
- json 是一种数据格式,本质是一段字符串
- json 与对象结构一致,对 js语言更友好
- JSON.stringify() JSON.parse()
持续更新……