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
隐式强制类型转换
+/-/!/~
+/- 一元运算符 => 运算符会将操作数进行 ToNumber 处理
! => 会将操作数进行 ToBoolean 处理
~ => (~x)相当于 -(x + 1) eg: ~(-1) ==> 0; ~(0) ==> 1; 在 if (...)中作类型转换时, 只有-1 时, 才为假值
+加号运算符 => 若操作数有 String 类型, 则都进行 ToString 处理, 字符串拼接. 否则进行 ToNumber 处理, 数字加法
条件判断
if (...), for(;;;), while(...), do...while(...)中的条件判断表达式
? : 中的条件判断表达式
|| 和 && 中的中的条件判断表达式
以上遵循 ToBoolean 规则
||和&&
返回值是两个操作数的中的一个(且仅一个). 首先对第一个操作数条件判断, 若为非布尔值则进行 ToBoolean 强制类型转换.再条件判断
|| => 条件判断为 true, 则返回第一个操作数; 否则, 返回第二个操作数. 相当于 a ? a : b
&& => 条件判断为 true, 则返回第二个操作数; 否则, 返回第一个操作数, 相当于 a ? b : a
显示类型转换(除了各个基本类型的构造函数还有以下方法)
boolean
string
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