es6中新增了let與const來定義變數:
console.
log(a)
;//這裡的a指的是**塊裡的a
上方**可以輸出結果為1,因為var是全域性宣告的,所以,即使是在區塊裡宣告,但仍在全域性起作用
再來看看下面這段**:
var a =1;
console.
log(a)
;
輸出為2,因為var是全域性宣告的
總結:用var定義的全部變數,有時候會汙染整個js的作用域
var a =1;
console.
log(a)
;
輸出為1,用let宣告的變數,只在區域性(塊級作用域)起作用
let是防止資料汙染,我們來看乙個經典的for迴圈的例子
①:用var宣告變數
for
(var i =
0; i <
10; i++
)所在的塊級作用域中,重新定義乙個新的i
}console.
log(i)
;
上方**可以正常列印結果,且最後一行結果是10,說明定義的變數i是在全域性起作用的
①:用let宣告變數
for
(let i =
0; i <
10; i++
)console.
log(i)
;
上面的最後一行無法列印結果,因為let定義的變數有塊級作用域
**總結:**我們要習慣用let宣告,減少var宣告帶來的汙染全域性空間
在程式開發中,有些變數是希望宣告後,在業務層就不再發生變化,因此可以用const來定義
好處:const定義的常量不會被修改
注意:用const宣告的變數,只在區域性(塊級作用域)起作用
相反,用var宣告的變數,可以重複宣告,沒有塊級作用域,不能限制
定義和呼叫函式:(傳統寫法)
function
fn1(a,b)
console.
log(
fn1(1,
2));
定義和呼叫函式:(es6)
var
fn2=
(a,b)
=> a + b;
console.
log(
fn2(1,
2));
二者的效果是一樣的
在箭頭函式中,如果方法體內不止一句話,那就需要在方法體外邊加上括號{} 例如:
var
fn2=
(a,b)
=>
console.
log(
fn2(1,
2));
從上面的箭頭函式中,我們可以很清晰的找到方法名,引數名,方法體
上方**中:
箭頭函式只是為了寫起來更酷嗎?當然不是,它含有很大乙個作用就是與this的指向有關
es5中,this指向的是函式被呼叫的物件,而es6的箭頭函式中,this指向的是函式被定義時
簡單來說,箭頭函式的this,是不會變的,是永遠繫結在當前的環境下
ES6新特性之箭頭函式與function的區別
function的寫法 function fn a,b 箭頭函式的寫法 let foo a,b 在function中,this指向的是呼叫該函式的物件 使用function定義的函式 function foo var obj foo window obj.aa obj而在箭頭函式中,this永遠指向...
ES6特性 箭頭函式
es6允許使用 箭頭 定義函式。基本語法 引數 函式體 var f v v 等價於 var f function v 如果箭頭函式不需要引數或需要多個引數,需要使用 括起來 var f 1 等價於 var f function var sum a,b a b 等價於 var sum function...
ES6新特性 函式的簡寫(箭頭函式)
var fn function 例如 var add function a,b 或者 function fn 例如 function add a,b 將原函式的 function 關鍵字和函式名都刪掉,並使用 連線引數列表和函式體。function add a,b 簡寫為 a,b var add f...