1、函数默认参数
function sum (a,b){
a = a||0 //为a设置默认值,当未给a赋值时a=0
b = b||0 //为b设置默认值,当未给b赋值时b=0
}
return a+b
sum(1) //值为1,此时默认b的值为0
sum(1,2) //值为3,当a和b都赋值时,就不取他们的默认值
b = b||0 一句话等价于 if (b){
b = b
}else{
b = 0
}
上面的形式也可以直接写成:
function sum(a=0,b=0){
return a+b
}
sum(参数1,参数2)
2、在不知道参数个数的情况下求和
function sum(){
let result = 0
for(let i=0;i<arguments.length;i++){
result += arguments[i]
}
return result
}
sum(1,2,3,4,5) //15
3、剩余参数求和
function sum(message,...numbers){
result = numbers.reduce((p,v)=>p+v,0)
return message + result
}
sum('结果是',1,2,3,4,5,6,7,8,9,10) //结果是55
将arguments伪数组转为真数组
function sum(message){
let args = Array.prototype.slice.call(arguments) //ES5
let args = Array.from(arguments) //ES6
let args = [...arguments] //ES6 前三句话功能一致,都是将arguments转为真数组
let numbers = arguments.slice(1)
result = numbers.reduce((p,v)=>p+v,0)
return message+result
}
4、展开操作
var array1 = [1,2,3,4,5,6,7]
var [a,b,c,...array2] = array1
console.log(array2) //[4,5,6,7]
5、交换a和b的值
var a = 1
var b = 2; //这一行的分号必须要加,否则JS的语法会将中括号向上一行提升,导致报错
[a,b] = [b,a]
6、解构赋值
var frank = {name:'frank',age:18,gender:'Male'}
var name = frank.name //ES6语法中,这一行相当于左边倒数的三行 var{name,age,gender} = frank (等号左边frank是被解构对象)
var age = frank.age
var gender = frank.gender
7、...做对象浅拷贝和对象合并
浅拷贝:
let objA = {
name: {
x:'a'
}
}
let objB = {...objA}
console.log(objB) //{name:{x:"a"}}
对象合并:
let onjA = {
p1 = 1,
p2 = 2
}
let objC = {
p1 = 111,
p3 = 3
}
let objB = Object.assign({},objA,objC) //写法2 let objB = {...objA,...objC}
console.log(objB) //{p1:111,p2:2,p3:3}
深拷贝:
JSON.parse(JSON.stringify(data))
8、新字符串
i.多行字符串及字符串里插入变量
结果里有四个回车
var string = `
<div>
<p>${ text }</p> //${ 这里面的 空格 都会被 忽略 }
</div>
`
结果里没有回车
var string = "<div>" +
"<p>" + text + "</p>" +
"</div>"
ii.函数接字符串
var name = '月月'
var person = '人'
var fn = function(){
let strings = arguments[0]
let var1 = arguments[1]
let var2 = arguments[2]
if(var1 === '芳芳'){
return var1 + string[1] + '好人'
}else{
return var1 + string[1] + '坏人'
}
}
fn`${name} 是一个 ${person}` //"月月 是一个 坏人"
var name = '芳芳'
var person = '人'
var fn = function(){
let strings = arguments[0]
let var1 = arguments[1]
let var2 = arguments[2]
if(var1 === '芳芳'){
return var1 + string[1] + '好人'
}else{
return var1 + string[1] + '坏人'
}
}
fn`${name} 是一个 ${person}` //"芳芳 是一个 坏人"