刷了一遍红宝书、你不晓得的JS,记录一些js比拟重要且不易留神到的点,如有有余的中央,请多多见谅哈Thanks♪(・・)ノ

  • undefined不是is not defined
  • undefined == null (规定是这样。。)
  • {} + [] 为0
  • Array.from()和slice、concat办法相似,可拷贝一个数组,可转换类数组
  • 字符串String能进行concat();
  • 字符串类型不可渐变mutation
  • 小数中0.能够省略成 . (包含css)
  • 数值精确化 number.toFixed(1)
  • Number.isInteger检测是否是整数。
  • null指曾赋过值,然而目前没有值。
  • -0 === 0 。
  • undefined != false
  • Object.is(A,B)能够更精确判断两个值是否相等
  • Array .length = 0 能够清空数组
  • 数组的toString()办法可返回“a,b,c,d”
  • Number(null) 等于 0
  • Number([]) 等于 0
  • Number("") == 0
  • Number.([1,2,3]) == NaN . Number([]) == 0 ;
  • 强制转换布尔值 !!反转
  • a||b 如为true返回a (第一个) 否则返回b。a&&b正好相同 如true返回b。&&先执行,而后才是||
  • ==隐式转换优先把非数字转换为数字,把全副转换为数字(==号有很多坑,倡议大家独自过一下这块内容,不倡议应用==号进行判断)
  • ,逗号优先级最低
  • js引擎会依赖作用域去找货色
  • const形式定义一个数组 能够对该数组进行批改
  • ES6参数默认值对null会转换成0
  • 解构赋值能够嵌套
  • 生成器可暂停本身
  • import会晋升
  • Object对象只能承受字符串作为键值
  • Set操作可链式调用: .size .add() .clear() .delect() .has()

其余

  1. 迭代办法array.map,filter,some,forEach...函数中承受一个回调函数,函数参数都是function (以后项,以后项下标,原数组)
  2. array.some()办法返回布尔值 用于判断数组中任意一个符合条件则返回true,相似一个or,||运算
  3. array.every()相同,相似与&& ,and运算 必须每一项都返回条件则为true,
  4. map 为依据回调函数中的返回值映射到新数组中。
  5. reduce()和reduceRight()相同
  6. js中应用String的办法js会在运行时后盾做解决,主动隐式的生成调用一个String类型的实例在实例上调用办法,最初再销毁实例。对应实例会立刻销毁。
  7. 如果function是第一个词就是函数申明,否则就是一个表达式。js引擎会在解释之前进行js编译 ,变量晋升在js执行前,函数晋升优先级比变量高,呈现在前面的函数申明会笼罩后面的。var a=2 不晋升,只晋升a对申明,赋值不晋升 ,a=2 对执行程序不会扭转,留在原地,函数申明会被晋升。然而函数表达式不会被晋升。千万不要在if for...等代码块内申明函数
  8. Object.defineProperty()定义某对象属性描述符定义是否可枚举、是否可配置、是否可写、value。get set 必须成对同时定义,get 操作会查找原型链
  9. hasOwnProperty针对对象查看属性
  10. for in循环查看原型链遍历key值,for of 可便当数组项
  11. js其实没有类的概念 ,class 中的super示意父类,先人类、类的继承就是复制
  12. prototype原型对象是在调用new时创立的对象。new 为结构函数调用
  13. Object.create(null)会创立一个没有原型链的对象,所以非常适合存储数据

Promise

  • Promise.resolve().then永远是个promise对象
  • promise的then回调中能return一个promise对象来执行promise工作,会以对象模式传递到下一个then
  • then 可承受正常值或一个promise对象
  • promise.all相似并且、and、&&的关系。
  • promise.race相似或者、or、||,promise.race([...,setTimeout])能实现某些操作超时的成果。
  • then和catch都会返回一个全新的promise

最初来一个一行代码实现数组去重????:

function xx(arr){return arr.filter((item,idx,array)=>arr.indexOf(item) === idx) ;}