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