practice

Array

deconstruction

let csvFileLine = '1997,John Doe,US,john@doe.com,New York'
let { 2: country, 4: state } = csvFileLine.split(',')

//交换参数数值
let param1 = 1
let param2 = 2
;[param1, param2] = [param2, param1]

//接收函数返回的多个结果
let getFullPost = async () => {
	return await Promise.all([fetch('/post'), fetch('/comments')])
}
let [post, comments] = getFullPost()

unique arr

//arr only includes undefined、null、boolean、string、number
let array = [1, 1, 2, '3', false, undefined, null, NaN, '', 0]
let uniqueArr = [...new Set(array)]
let a = Array.from(new Set(array))

merge

ensure arr length

Array.from(arrayLike[, mapFn[, thisArg]])

filter falsy

arr slice

clear arr

get arr item

isEmptyArr

arr.flat(depth) or ...

快速创建数字数组

数组交集

reduce

过滤对象数组

生成由随机整数组成的数组,数组长度和元素大小可自定义

洗牌算法

Object

deconstruction

isType

isEmptyObject

merge(ShallowCopy)

clone

check property

create pure object

arr obj to obj

add property with condition

Object.entries(obj)、Object.fromEntries(iterable)

obj.flatMap

Function

deconstruction params、default value

required params

惰性载入函数

一次性函数

String

字符串比较时间先后

JS 对象转 url 查询字符串

生成随机 ID

生成随机 HEX 色值

生成星级评分

Number

取整

判断奇偶数

数字补零操作

随机生成六位数字验证码

精确小数

生成范围随机数

Boolean

Data Convert

隐式强制类型转换

  1. +/-/!/~

  • +/- 一元运算符 => 运算符会将操作数进行 ToNumber 处理

  • ! => 会将操作数进行 ToBoolean 处理

  • ~ => (~x)相当于 -(x + 1) eg: ~(-1) ==> 0; ~(0) ==> 1; 在 if (...)中作类型转换时, 只有-1 时, 才为假值

  • +加号运算符 => 若操作数有 String 类型, 则都进行 ToString 处理, 字符串拼接. 否则进行 ToNumber 处理, 数字加法

  1. 条件判断

  • if (...), for(;;;), while(...), do...while(...)中的条件判断表达式

  • ? : 中的条件判断表达式

  • || 和 && 中的中的条件判断表达式

以上遵循 ToBoolean 规则

  1. ||和&&

  • 返回值是两个操作数的中的一个(且仅一个). 首先对第一个操作数条件判断, 若为非布尔值则进行 ToBoolean 强制类型转换.再条件判断

  • || => 条件判断为 true, 则返回第一个操作数; 否则, 返回第二个操作数. 相当于 a ? a : b

  • && => 条件判断为 true, 则返回第二个操作数; 否则, 返回第一个操作数, 相当于 a ? b : a

显示类型转换(除了各个基本类型的构造函数还有以下方法)

  1. boolean

  1. string

  1. number

Promise

优雅处理 AA 参数

循环 promise

并行循环 promise

Date

得到想要的时间格式

时间显示转换

DOM

显示全部 DOM 边框:调试页面元素边界时使用

自适应页面

XSS

存取 LocalStorage

文件大小显示转换

Code

1 不要使用否定条件式

2 对于多个条件,使用 Array.includes

3 匹配所有条件,使用 Array.every 或者 Array.find

4 匹配部分条件,使用 Array.some

5 提前返回而不是使用 if...else 分支

6 使用索引或者映射,而不是 switch 语句

Mis

  • callback: u define, u don't invoke, but it is invoked afterwards

  • 分号注意

    • 以小括号开头的前一条语句

    • 以中括号开头的前一条语句

    • 以正则开头的前一条语句

    • Template开头的前一条语句

    • js 文件合并的时候最好开始加分号或void function()()

    • do...while 有分号

    • 函数表达式有分号

  • use strict只能出现在脚本、模块和函数体的最前面

  • debug border

Last updated