# ES6--函数与对象，新字符串

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

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}  //"芳芳 是一个 坏人"

• 广告
• 抄袭
• 版权
• 政治
• 色情
• 无意义
• 其他

120