3.4 KiB
3.4 KiB
javascript 学习总结
基础
- 输入
prompt(...)
- 比较
- 如果两边任意一边出现
true
或者false
使用 === - 如果两边任意一边可能是特定值
0,"", []
使用 === - 剩下的所有情况,使用 ==
- 对于引用类型来说,比较仅仅是比较其引用是否是同一个,另外在和字符串比较时,数组会自动转成字符串
var a = [1,2,3] var b = [1,2,3] var c = "1,2,3" console.log(a == b) // false console.log(a == c) // true console.log(b == c) // true
- switch语句
switch(a) { case 2: case 10: // 2 或者 10 执行 break; default: // 条件都不满足默认执行 }
- 如果两边任意一边出现
ES6
- let 尽量将变量声明放在代码块开始,避免在(Temproal Dead Zone, TDZ)临时死亡区使用而报错
- 尽量使用for...let,在每次循环中都会声明一个新的变量,生成了一个闭包。避免for里边的函数在调用的时候引用不到正确的变量。
- const声明,相对于保护其中的内容更注重其语意所带来的规范性
- 如果把方法定义在{}内,那么在块外执行会报ReferenceError
- spread/rest
...
放在数组前用于展开数组,放在变量前就是收集变量到一个数组里,例如function a(...arg){} a(a,b,c) -> arg = [a,b,c]
- 解构
var [a, b, c] = foo()
如果foo返回的是一个长度为三的数组其内容将会被依次赋值给abc- 对象属性复制模式
var {a, b, c} = foo()
这里省略的其实是a:, b:, c:
,对象的属性名要和函数返回的属性名相同,然后将值一一赋值给属性值var {a: x, b: y, c: z} = foo()
最后使用的是xyz
而不是abc
- 对于这个形式,如果省略声明符就需要用小括号括起来
({a, b, c} = foo())
- 对于这个形式,如果省略声明符就需要用小括号括起来
- 对象属性名的计算属性
var which = 'w'; o1 = {which: 'w'}; => {which: 'w'} o2 = {[which]: 'w'}; => {w: 'w'}
使用中括号即可 - 简单的交换两个元素
[a, b] = [b, a]
' - 允许出现多次列出同一个源属性
{a: {x: X, x: Y}, a} = {a: {x: 1}} => X == X == 1, a = {x :1}
- 不必都写在一行里,解构的目的不是为了打字更少,而是为了可读性更强
- 赋值的时候用不到的东西可以抛弃
[,a,b] = [1, 2, 3] => a = 2, b = 3
- 赋值的时候多余的东西会赋值undefined
[a, b] = [1] => a = 1, b = undefined
- 赋值的时候可以使用spread/rest
...
进行收集操作[...a,b] = [1, 2, 3] => a = [1, 2], b = 3
- 赋值的时候可以使用默认值
{a, b: WW = 20} = {a: 10} => a = 10, WW = 20
- 赋值的时候可以嵌套结构
- 在形参中使用这个就接近了命名参数,得到了任意位置的可选参数功能,设置默认参数
{x = 10} = {}
- 对象属性复制模式
- 对象字面量扩展
- 简洁属性
{x}
- 简洁方法
{x(){}}
- 这个操作会生成一个匿名的函数,如果需要递归请不要使用
- 简洁属性
- 模板字面量
...${foo(`${name}s`)}
function foo(strings, ...args) { console.log(strings) console.log(args) } var desc = "awesome" foo`Every thing is ${desc}!` // ["Every this is ", "!"] // ["awesome"] // 配合Strng.resuce可以用来处理字符串
- 箭头函数
- 合理使用,函数越短越适合用,函数长了反而会使函数边界模糊
- 主要的功能是为了this的规范化而不是减少代码量
- 尽可能减少非必要情况下的箭头函数使用