JS的ES6的基礎語法


JS的ES6

1.let

 let age = 12; 

(1). 作用:

  • 與var類似, 用於聲明一個變量

(2). 特點:

  • 在塊作用域內有效

  • 不能重復聲明

  • 不會預處理, 不存在提升

(3). 應用:

  • 循環遍歷加監聽

  • 使用let取代var是趨勢

2.const

 const sex = '男'; 

(1). 作用:

  • 定義一個常量

(2). 特點:

  • 不能修改

  • 其它特點同let

(3). 應用:

  • 保存不用改變的數據

3.解構賦值

(1)對象的解構賦值:從對象的屬性中取到想要的屬性值 

1     let obj = {name : 'kobe', age : 39};
2     //對象的解構賦值
3     let {name,age,xxx} = obj;  //定義的變量要與屬性key相同,使用大括號{} 4     console.log(age,name,xxx); //39 "kobe" undefined

(2)數組的解構賦值

1     let arr = ['abc', 23, true]; 
2     let [, b, c, d] = arr;  //使用中括號[],可以使用占位空的,還是按順序獲得數組下標對應的值 3     console.log(b, c, d); //23 true undefined

用處:簡化傳參

1     let obj = {name : 'kobe', age : 39};
2     
3     function person1({name, age}) {
4      console.log(name, age);
5     }
6     person1(obj);

4.模版字符串

模板字符串必須用 `` 包含,變量用${xxx}

1     let obj = {
2         name : 'anverson',
3         age : 41
4     };
5     console.log('我叫:' + obj.name + ', 我的年齡是:' + obj.age); //我叫:anverson, 我的年齡是:41
6 
7     console.log(`我叫:${obj.name}, 我的年齡是:${obj.age}`); //我叫:anverson, 我的年齡是:41

 5.簡寫的對象寫法:

  • 省略同名的屬性

  • 省略方法function以及前面的:

 1     let x = 3;
 2     let y = 5;
 3     //普通額寫法
 4 //    let obj = {
 5 //        x : x,
 6 //        y : y,
 7 //        getPoint : function () {
 8 //            return this.x + this.y
 9 //        }
10 //    };
11     //簡化的寫法
12     let obj = {
13         x,  //為外部的x
14         y,  //為外部的y
15         getPoint(){  //省略:function
16             return this.x
17         }
18     };
19     console.log(obj, obj.getPoint());  //Object 3

6.三點運算符

又稱:rest參數

作用:用來取代arguments 但比arguments靈活

限制:

  • 只能是最后部分形參參數。

  • 只能遍歷數組,不能遍歷對象。

 1     //作為形參,是真實的數組可以遍歷
 2     function fun(...values) {
 3         console.log(arguments);
 4 //        arguments.forEach(function (item, index) {
 5 //            console.log(item, index);  //報錯,arguments是偽數組不能遍歷
 6 //        });
 7         console.log(values);
 8         values.forEach(function (item, index) {
 9             console.log(item, index);
10         })
11     }
12     fun(1,2,3);
13 
14     //將一個數組插入到另一個數組
15     let arr = [2,3,4,5,6];
16     let arr1 = ['abc',...arr, 'fg'];
17     console.log(arr1); //'abc' 2 3 4 5 6 'fg'

7.形參的默認值

作用:當不傳入參數的時候默認使用形參里的默認值

1     //定義一個點的坐標
2     function Point(x=12, y=12) {
3         this.x = x;
4         this.y = y;
5     }
6     let point = new Point(25, 36);
7     console.log(point);  //25 36
8     let point2 = new Point(); 
9     console.log(point2);  // 12 12

8.箭頭函數

又稱:lambda表達式[和Java的差不多,但符號是=>]

 1         //1.普通寫法
 2         let fun = function () {
 3             console.log('fun()');
 4         };
 5         fun();
 6         //2.沒有形參,並且函數體只有一條語句
 7         let fun1 = () => console.log('fun1()');
 8         fun1();
 9         console.log(fun1());
10         //3.一個形參,並且函數體只有一條語句
11         let fun2 = x => x;
12         console.log(fun2(5));
13         //4.形參是一個以上
14         let fun3 = (x, y) => x + y;
15         console.log(fun3(25, 39)); //64
16 
17         //5.函數體有多條語句
18         let fun4 = (x, y) => {
19             console.log(x, y);
20             return x + y;
21         };
22         console.log(fun4(34, 48)); //82

特殊點在this:

箭頭函數的this看外層的是否有函數,
  • 如果有,外層函數的this就是內部箭頭函數的this.
  • 如果沒有,則this是window。

箭頭函數在定義時就確定了!!!使用call,apply,bind都不能綁定this。

一般函數得看誰調用他,this就是誰,可以使用call,apply,bind。

1     <button id="btn">測試箭頭函數this_1</button>
2     <button id="btn2">測試箭頭函數this_2</button>
 1         setTimeout(() => {
 2             console.log(this); //window
 3         }, 1000)
 4 
 5         let btn = document.getElementById('btn');
 6         //沒有箭頭函數
 7         btn.onclick = function () {
 8             console.log(this); //btn
 9         };
10         //箭頭函數
11         let btn2 = document.getElementById('btn2');
12 
13         let obj = {
14             name: 'kobe',
15             age: 39,
16             getName: () => {
17                 btn2.onclick = () => {
18                     console.log(this); 
19                 };
20             }
21         };
22         obj.getName(); //window
23 
24 
25         function Person() {
26             this.obj = {
27                 showThis: () => {
28                     console.log(this); 
29                 }
30             }
31         }
32         let fun5 = new Person();
33         fun5.obj.showThis(); //Person
 1         var name = "windowname";
 2         var oo = {
 3             name:"outname",
 4             ll :{
 5                 inname : "inname",
 6                 f : () => console.log(this),
 7                 ff(){
 8                     console.log(this);
 9                 }
10             }
11         }
12 
13         var obj4 = {
14             name : "name"
15         }
16 
17         oo.ll.f(); //window
18         oo.ll.ff(); //調用它的ll ==> Object {inname: "inname"}
19         oo.ll.ff.call(obj4); //obj4 ==>Object {name: "name"}
20         oo.ll.f.call(obj4); //綁定不了還是window

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM