【js 中需要特别注意的地方记录(上篇)】

刷了一遍红宝书、你不知道的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) ;
}

你可能感兴趣的:(javascript,前端,es6)