// 立即執行函式:定義出來的函式占用記憶體,對於一次性的函式,可以使用立即執行函式doctype html
>
<
html
lang
="en"
>
<
head
>
<
meta
charset
="utf-8"
>
<
meta
name
="viewport"
content
="width=device-width, initial-scale=1.0"
>
<
title
>document
title
>
head
>
<
body
>
body
>
<
script
>
/*匿名函式
*/varx =
function
(num)
/*函式
*/function
getage(age)
/*形參:a,b,c
*/function
vars(a,b,c)
}/*實參:1,2,3
*/vars(1,
2,3);
//系統會建立 arguments = [1,2,3]
/*不定引數函式
*/function
sum()
return
result;
}sum(1,
2,5,
9,7);
/*箭頭函式
*/let elements =[
'hydrogen',
'helium',
'lithium',
'beryllium'];
elements.map(
function
(element) );
//返回陣列:[8, 6, 7, 9]
//上面的普通函式可以改寫成如下的箭頭函式
elements.map((element)
=>
); //
[8, 6, 7, 9]
//當箭頭函式只有乙個引數時,可以省略引數的圓括號
elements.map(element
=>
); //
[8, 6, 7, 9]
//當箭頭函式的函式體只有乙個 `return` 語句時,可以省略 `return` 關鍵字和方法體的花括號
elements.map(element
=>
element.length);
//[8, 6, 7, 9]
//在這個例子中,因為我們只需要 `length` 屬性,所以可以使用引數解構
//需要注意的是字串 `"length"` 是我們想要獲得的屬性的名稱,而 `lengthfoobarx` 則只是個變數名,
//可以替換成任意合法的變數名
elements.map(()
=>
lengthfoobarx);
//[8, 6, 7, 9]
//等效於
elements.map(
function
( element ) );
(function(a, b) (1, 2));
let an = function(a, b) (1, 2);
script
>
html
>
關於匿名函式:
配合var關鍵字,匿名函式不會造成全域性變數的汙染。
關於箭頭函式:
(param1, param2, …, paramn) =>
(param1, param2, …, paramn) => expression
箭頭函式表示式的語法比函式表示式更簡潔,並且沒有自己的this,arguments,super或new.target。箭頭函式表示式更適用於那些本來需要匿名函式的地方,並且它不能用作建構函式。
引入箭頭函式有兩個方面的作用:更簡短的函式並且不繫結this。
在箭頭函式出現之前,每乙個新函式根據它是被如何呼叫的來定義這個函式的this值:
箭頭函式不繫結arguments 物件。
箭頭函式不能用作構造器,和 new一起用會丟擲錯誤。
箭頭函式沒有prototype屬性。
yield 關鍵字通常不能在箭頭函式中使用(除非是巢狀在允許使用的函式內)。因此,箭頭函式不能用作函式生成器
匿名函式與箭頭函式的區別
you don t know js 給出了乙個決策圖 箭頭函式適合於無複雜邏輯或者無 的純函式場景下,例如用在map reduce filter的 函式定義中 不要在最外層定義箭頭函式,因為在函式內部操作this會很容易汙染全域性作用域。最起碼在箭頭函式外部包一層普通函式,將this控制在可見的範圍...
箭頭函式基礎
基本用法 es6使用 箭頭 定義函式 varf v v 等同於varf function v 使用注意點 函式體內的this物件,就是定義是所在的物件,而不是使用時所在的物件。不可以當作建構函式,也就是說,不可以使用new命令,否則會丟擲錯誤。不可以使用arguments物件,該物件在函式體內不存在...
函式基礎(三) 巢狀函式 匿名函式
講完作用域之後 對變數的作用範圍有大致的了解了嗎?講個稍微小高階的東西吧 能夠幫助你更加的理解全域性和區域性變數 從小的一點一點的往大了裝,乙個巢狀乙個 函式也可以這麼玩 msg 我是全域性變數 def func msg 我是函式func的區域性變數 def func1 msg 我是函式func1的...