函数默认参数
1 | function sum(a=0, b=0){ |
与python不同:
在函数被调用时,参数默认值会被解析,每次函数调用时都会创建一个新的参数对象
1 | function push(item, array=[]){ |
1 | def fn(item, array=[]): |
剩余参数
1 | function sum(message, ...numbers){ |
伪数组变数组
1 | let args = Array.prototype.slice.call(arguments) |
展开操作
1 | let array1 = [1,2,3,4,5,6] |
解构赋值
js方括号会提到上一行,方括号开头的加分号
交换 a b 的值
1
2
3var a = 1
var b = 2
;[a,b] = [b,a]1
[a, b, ...rest] = [10, 20, 30, 40, 50]
1
2var m = {name: 'Jerry', age: 18, gender: 'Male'}
var {name, age, gender} = m1
2
3var m = {name: 'Jerry', age: 18, gender: 'Male'}
var {name: xingming} = m
console.log(xingming) // Jerry 取得是 name ,但是将name重命名成 xingming1
2
3var m = {name: 'Jerry', age: 18, gender: 'Male', child: {name: 'Tom'}}
var {child: {name:xixngming='no'}} = m
console.log(xingming) // Tom对象拷贝(浅拷贝)
1
2let objB = Object.assign({}, objA)
let objB = {...objA}深拷贝
1
2
3JSON.parse(JSON.stringfy(data))
//这个方法不适用于复杂对象
//复杂对象深拷贝要用递归对象合并
1
2let objC = Object.assign({}, objA, objB)
let objC = {...objA, ...objB}对象属性加强
1
2
3
4
5
6
7
8
9
10var x = 1
var y = 2
var obj = {
x: x,
y: y
}
//可以写成
var obj = {x, y}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15var key = 'x'
var value = 'y'
var obj = {}
obj[key] = value
//可以写成
var obj = {
[key]: value //动态的 key 值 用 [] 括起来
}
//错误写法
var obj = {
key: value //错的,key 变成字符串
}函数属性可以缩写
1
2
3
4
5
6
7
8
9
10var obj2 = {
sayHi: function(){},
sayBye: function(){}
}
//可以写成
var obj2 = {
sayHi(){},
sayBye(){}
}
函数接字符串
1 | var name = 'lk' |