前端总结四 Js琐碎的小知识点

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()

持续更新……

你可能感兴趣的:(前端总结四 Js琐碎的小知识点)