1.常量 ES5沒有定義聲明常量的方式,ES6標準中引入了新的關鍵字const來定義常量。 常量必須給初始值; 常量不能在同一作用域內重新定義或賦值; 2.塊級作用域 JS中作用域有:全局作用域、函數作用域 ES6中新增了塊級作用域。 塊作用域由 { } 包括,if語句和for語句裡面的{ }就屬於 ...
1.常量
ES5沒有定義聲明常量的方式,ES6標準中引入了新的關鍵字const來定義常量。
常量必須給初始值; 常量不能在同一作用域內重新定義或賦值;
<script> const PI = 3.14; console.log(PI); </script>
2.
//註意 塊級作用域中,使用var聲明的變數是全局變數 { var a = 1; console.log(a);//1 } console.log(a);//1 if(true){ var b = 2; console.log(b);//2 } console.log(b);//2
ES6中增加了let關鍵字聲明變數,聲明的變數只在當前代碼塊中生效(塊級作用域)。
<script> // let聲明的變數可以重新賦值 { let a = 1; console.log(a); a = 2; console.log(a);; } </script> <script> // let聲明的變數不能在同一作用域重新聲明,直接報錯 預解析錯誤 { let a = 1; console.log(a); let a = 2; console.log(a); } </script>
{ console.log(i);//報錯 let i = 8; }
var arr = [3,4,5,6,7]; for(let i=0; i<arr.length; i++){ // (function(i){ setTimeout(function(){ console.log(i); //console.log(arr[i]); }, 1000); // })(i); }
//生成一個隨機數 var num=Math.random(); //將這個數字輸出到console console.log('your num is ' + num); console.log(`your num is ${num}`); var str = `hello 歡迎來到黑馬大講堂`; console.log(str);
4.函數
//ES5中,只能變相實現參數預設值(函數內部加判斷處理) function f1(username){ //傳統的指定預設參數的方式 var username = username || 'zhangsan'; console.log('Hello ' + username); } f1();//Hello zhangsan f1('lisi');//Hello lisi //ES6中,直接給形參設置預設值 function f2(username='zhangsan'){ console.log(`Hello ${username}`); //console.log('Hello ' + username); } f2();//Hello zhangsan f2('lisi');//Hello lisi
//展開數組 var arr = [1, 2, 3]; console.log(arr); // [1, 2, 3] console.log(...arr); // 1 2 3 //展開字元串 var str = "hello"; console.log(str); console.log(...str);
應用:拓展參數
它允許傳遞數組或者類數組直接做為函數的參數。
//函數本來接收三個單獨的參數 function f3(x,y,z){ console.log(x,y,z); } //ES6中,我們可以將一個數組以拓展參數的形式傳遞,它能很好地映射到每個單獨的參數 var arr=[3,4,5]; f3(...arr);//輸出:3 4 5 //ES5中,如果需要傳遞數組當參數,我們需要使用函數的apply方法 f3.apply(null,arr);//輸出:3 4 5
//不定參數 將多個實參放在一個數組變數中 // ...x 三個點是固定格式,x是形參變數名 function f1(...x){ console.log(x); } f1(3,4,5); //[3,4,5] function f2(m, n, ...x){ console.log(m, n, x); } f2(2,3,4,5,6); // m=2 n=3 x=[4,5,6]