基础
判断true和false
- 如果逻辑对象无初始值或者其值为 0、-0、null、””、false、undefined 或者 NaN,那么对象的值为 false。否则,其值为 true(即使当自变量为字符串 “false” 时)!
- 但是不要想当然的理解为 0 == null(结果为false) ,1 == “abc”(结果是false), null == undefined (结果为false)
- 不过 0 == false , 1 == true(结果都为true)
任意类型的值转换为布尔类型的语法糖
1 | !!val |
一个!是取非 再一个!又取非 相当于把这个数据转换为boolean类型了
JavaScript
Array.some()
1 | const array = [1, 2, 3, 4, 5]; |
沙箱
JS判断两个对象内容是否相等
https://www.jianshu.com/p/7407bd65b15d
自定义sleep
1 | const sleep = function (time) { |
判断字符包是否包含中文
1 | /.*[\u4e00-\u9fa5]+.*$/.test(str) |
ES5
ES5中bind()函数
ES6
ES6教程
http://es6.ruanyifeng.com/?search=%E8%A7%A3%E6%9E%84&x=0&y=0
ES6解构赋值
Google JavaScript Style Guide
https://google.github.io/styleguide/jsguide.html
let vs var
在ES6之前,我们都是用var来声明变量,而且JS只有函数作用域和全局作用域,没有块级作用域,所以{}限定不了var声明变量的访问范围。
1 | { |
ES6新增的let,可以声明块级作用域的变量。
1 | { |
https://www.jianshu.com/p/bd7f6cf64e41
const vs var vs let
https://tylermcginnis.com/var-let-const/
简而言之:
1、var的作用域是函数级别,默认值是undefined;
2、let的作用域是代码块级别,未赋值就引用会抛出ReferenceError
3、const的作用域和let一样,但是const相当于是一个常量,赋值之后不能直接修改,不然会抛TypeError,但是如果是其指向的值是对象,那么可以修改对象的子属性,如:
1 | const person = { |
export
export vs export default
其中export和export default最大的区别就是export不限变量数 可以一直写,而export default 只输出一次 而且 export出的变量想要使用必须使用{}来盛放,而export default 不需要 只要import任意一个名字来接收对象即可。
export const
export const 可以导出多个对象,import的时候用{}承接。
let
let obj = {}, content; todo
ES6中import * as xxx from ‘xxx’的作用
import * as obj from ‘xx’ 这种写法是把所有的输出包裹到obj对象里
BOM(浏览器窗口对象模型)
1 | /*保存的数据用于浏览器的一次会话(session),当会话结束(通常是窗口关闭),数据被清空*/ |
Code specification
es6之扩展运算符…
对象中的扩展运算符(…)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中
变量的扩展
1 | let bar = { a: 1, b: 2 }; |
等同于:
1 | let bar = { a: 1, b: 2 }; |
如果用户自定义的属性,放在扩展运算符后面,则扩展运算符内部的同名属性会被覆盖掉。
1 | let bar = {a: 1, b: 2}; |
引用数据类型时,修改拷贝后的对象会影响到被拷贝的对象:
1 | let obj1 = { a: 1, b: 2, c: {nickName: 'd'}}; |
数组的扩展
filter() 数组过滤
判断数组的每个元素
1 | // 判断task.selected是在为true |
去掉数组空字符串、undefined、null
1 | let newArr = arr.filter(item => item) |
数组去重
1 | let newArr = arr.filter((x, index,self)=>self.indexOf(x)===index) |
或者:
1 | var arr = [1,2,1,'1',null,null,undefined,undefined,NaN,NaN] |
数组查询返回元素
1 | const result = arr.find(item=>{ |
Promise
Promise.all和Promise.race
https://www.jianshu.com/p/7e60fc1be1b2
还有最新的Promise.any,不过这个公司的架构中没有引进
babel
可以增加了一个babel插件,现在支持
result = 0 ?? result 这种写法
类似 0 || result,
|| 左侧条件是undefined,null,0
?? 左侧条件是undefined,null