VARIABLE
ES5所寫之 var 變數宣告,無論寫在哪裡,總是在一開始執行時被初始化:console.log(a); //undefined
console.log(b); //undefined
var a = 10;
function xx(){
var b = 10;
}
可以注意到的是 a,b 都有變成 undefined,表示有被註冊。
而 let 的差別在於在執行到 let 之前,變數絕對不會先被初始化。
console.log(a); //undefined
console.log(b); //undefined
console.log(c); //ERROR!!
var a = 10;
function xx(){
var b = 10;
let c = 19;
console.log(c); //10
}
console.log(a); //undefined
console.log(b); //undefined
console.log(c); //ERROR
另外一個是 const, 被宣告之後的值不會被變動,適合用來宣告引用模組的 require,而且 const 固定之後,可以省下系統效能來追蹤變數值。
const express = require('express');
express = require('bodyParser'); //ERROR!
FUNCTION
Function 在 ES6 的寫法有以下幾種:{
//直接用 { } 代替 (function(){ })()
console.log('hello world');
}
let some_object = {
say(){ //不需要加 say : function (){}
console.log("Say: ");
},
hello(){
console.log("Hell world!");
}
}
STRING
字串在 ES6 之後有了新的寫法,感覺應該叫做模板 (格式化)吧,可以說是進階版的 printf。let name = "canta y no llores.";
console.log(`Ay, ay, ay, ay, ${name}`);
只要是宣告過的變數,可以直接取來使用。LAMBDA (Arrow Function)
let func = (a,b) => a+b; //箭號後面的值會直接回傳。
console.log(func(1,2)); //3
func = (a,b) => {
++a;
return a + b;
}
console.log(func(1,2)); //4
FOR OF LOOP
除了 for in 打印迭代順序外,for of 可以打印其值出來:let array = ["Ay","ay","ay","ay","canta y no llores"];
for(let v of array){
console.log(v + ",");
}
Symbol
symbol 可以用來辨識 ID, 在 ES6 中成為基本型別。 這個 id 可以用來當作監聽識別 ID 或辨識身分,const test = Symbol("BIG_EVENT");
window.addListener(test,function(d){
});
解構
這裡的解構不是解構子,而是解構一個 object 物件,可以複製特定值指派到你想要的值中:let {
name : name, //後面這個 name 不是這裡的 name
age : age,
id : id,
} = { name: "Stockholm", age: 14, id:"test"}
console.log(name); // Stockholm
console.log(age); // 14
console.log(id); // test
Reference:
https://github.com/getify/You-Dont-Know-JS
沒有留言:
張貼留言