一.自執(zhí)行方法
<script>
? ? ? ? function fun(){
? ? ? ? ? ? console.log('Hello');
? ? ? ? }
? ? ? ? fun();
? ? ? ? // 自執(zhí)行函數(shù)
? ? ? ? // 注意:要以分號結束拣帽,否則可能會影響后面的語句
? ? ? ? (function fun2(){
? ? ? ? ? ? console.log('你好');
? ? ? ? })();
? ? ? ? // +號是自執(zhí)行函數(shù)的簡寫
? ? ? ? +function fun3(){
? ? ? ? ? ? console.log('你好,中國');
? ? ? ? }();
? ? ? ? (()=>{
? ? ? ? ? ? console.log('你好嚼锄,迪麗熱巴');
? ? ? ? })();
? ? </script>
二.rest參數(shù)
<script>
? ? ? ? // 方法的形參面前添加...就是rest參數(shù)
? ? ? ? // ...args 就是reset參數(shù)减拭,用于接受剩余的實參 注意:通常rest參數(shù)放在最后面
? ? ? ? // rest參數(shù),解決了函數(shù)中arguments對象不是數(shù)組類型的缺陷
? ? ? ? function fun1(a,b,c,...args){
? ? ? ? ? ?console.log(a,b,c);
? ? ? ? // arguments 是一個類數(shù)組對象区丑,結構長得像數(shù)組拧粪,其實是一個object對象
? ? ? ? ? ?console.log(arguments);
? ? ? ? // rest參數(shù) 是一個數(shù)組對象,既然是數(shù)組沧侥,就可以直接使用數(shù)組的方法可霎。
? ? ? ? ? ?console.log(args);
? ? ? ? ? ?let arr=args.map(r=>r*2)
? ? ? ? ? ?console.log(arr);
? ? ? ? // ? ?console.log(arguments)
? ? ? ? }
? ? ? ? fun1(100,200,300)
? ? ? ? fun1(100)
? ? ? ? fun1(10,20,30,40,50,60,70,80)
? ? ? ? console.log('------------------------------------------');
? ? ? ? // 在定義函數(shù)時,可以給函數(shù)設置默認值
? ? ? ? function fun2(a,b=200,c=300){
? ? ? ? ? ? console.log(a,b,c);
? ? ? ? }
? ? ? ? fun2(1,2,3)
? ? ? ? fun2(1,2)
? ? ? ? fun2(1)
? ? ? ? fun2()
? ? ? ? // 調(diào)用方法時宴杀,1癣朗,2,3,傳給a,b,c.其他的值傳給rest參數(shù)
? ? ? ? fun1(1,2,3,4,5,6,7,8,9,10)
? ? ? ? console.log('------------------------------------------------------------------');
? ? </script>
三.展開運算符
script>
? ? ? ? let arr1 = ?[11,22,33]
? ? ? ? let arr2 = ?[44,55,66]
? ? ? ? let arr3 = arr1.concat(arr2)
? ? ? ? console.log(arr3);
? ? ? ? // ...在這里就是展開運算符,在這里旺罢,展開運算符用于展開數(shù)組中的所有成員旷余。
? ? ? ? let arr4 = ?[...arr1,...arr2]
? ? ? ? console.log(arr4);
? ? ? ? console.log('---------------------------------');
? ? ? ? let obj1 = {
? ? ? ? ? ? a:100,
? ? ? ? ? ? b:200
? ? ? ? }
? ? ? ? let obj2 = {
? ? ? ? ? ? c:300,
? ? ? ? ? ? d:400,
? ? ? ? ? ? a:500
? ? ? ? }
? ? ? ? // ?...在這里,用于將對象的所有屬性展開扁达,并返回一個全新的對象
? ? ? ? let obj3={...obj1,...obj2}
? ? ? ? console.log(obj3);
? ? </script>
四.解構賦值
?<script>
? ? ? ? let no=1001
? ? ? ? let name='周杰倫'
? ? ? ? let age=30
? ? ? ? let sex='男'
? ? ? ? // 定義對象
? ? ? ? let stu1={
? ? ? ? ? ? // 屬性值:屬性名
? ? ? ? ? ? // 這里的屬性值是上面定義的變量保存的值
? ? ? ? ? ? no:no,
? ? ? ? ? ? name:name,
? ? ? ? ? ? age:age,
? ? ? ? ? ? sex:sex
? ? ? ? }
? ? ? ? console.log(stu1);
? ? ? ? console.log('---------------------------');
? ? ? ? // 對象的屬性名和屬性值標識相同時正卧,可以省略屬性值
? ? ? ? let stu2={
? ? ? ? ? ? // no,是no:no的簡寫
? ? ? ? ? ? no,
? ? ? ? ? ? name,
? ? ? ? ? ? age,
? ? ? ? ? ? sex
? ? ? ? }
? ? ? ? console.log(stu2);
? ? ? ? console.log('--------------------------');
? ? ? ? let stu3={
? ? ? ? ? ? username:'周杰倫',
? ? ? ? ? ? userage:30,
? ? ? ? ? ? usersex:'男',
? ? ? ? ? ? car:{
? ? ? ? ? ? ? ? carName:'奔馳',
? ? ? ? ? ? ? ? carPrice:'100w'
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? // 過去我們這樣寫
? ? ? ? // let username=stu3.username
? ? ? ? // let userage=stu3.userage
? ? ? ? let usersex=stu3.usersex
? ? ? ? // 現(xiàn)在我們這樣寫(解構賦值)
? ? ? ? // usersex;usersex2 表示在解構的時候?qū)ψ兞棵M行重命名
? ? ? ? let{username,userage,usersex:usersex2}=stu3
? ? ? ? console.log(username,userage,usersex,usersex2);
? ? ? ? console.log('----------------');
? ? ? ? // let{car}=stu3
? ? ? ? // let{carName,carPrice}=car
? ? ? ? let{car:{carName,carPrice}}=stu3 ?//這一行代碼跪解,最終會編譯成下面的兩行代碼
? ? ? ? // let caeName = stu3.car.carName
? ? ? ? // let carPrice=stu3.car.carPrice
? ? ? ? console.log(carName,carPrice);
? ? ? ? let arr =[11,22,33,44,55]
? ? ? ? // 解構數(shù)組中的元素炉旷,采用[]
? ? ? ? let [a,b]=arr
? ? ? ? console.log(a,b);
? ? </script>