JS函式與閉包

2022-09-09 08:30:11 字數 1394 閱讀 3388

用簡潔的語法表達函式,箭頭函式不能使用arguments、super、new.target,沒有prototype屬性

函式名、引數、內部屬性和方法

函式名是乙個位址,指向函式。name屬性包含該函式的名稱

引數在內部表現為乙個陣列,所以呼叫時引數不受數量和種類的約束。沒有過載。

可以在非箭頭函式內部呼叫,物件值為乙個類似陣列的物件。訪問使用中括號形式argument[0.1.2] 可以看長度 argument.lenth

如果定義另外乙個同名函式的話,會導致函式的覆蓋,所以沒辦法完成過載。

可以通過arguments判斷變數型別數量的形式來模擬過載。

預設引數值在es5的時候採用判斷引數是否是undefined的方法,es6能夠顯示的定義預設引數了。箭頭函式也可以。

直接在函式定義時候用等號寫在引數後面就能夠實現預設引數值,預設引數值可以是函式返回值。

let romannumerals = ['i','ii','iii','iv','v','vi'];

let ordinality = 0;

function getnumerals()

//帶有預設引數值的函式

function makeking(name = 'henry', numerals=getnumerals()) $`;

}console.log(makeking()); //'king henry i'

console.log(makeking()); // 'king henry ii'

預設的引數會按照定義的順序,在函式體內被初始化,下面的兩個可以理解為一樣。

function makeking(name = 'henery', numerals = 'viii') $`;

}function makeking()

es6新增擴充套件操作符,目的是為了讓可迭代的變數拆分後,乙個乙個傳進函式中。而不是直接傳遞整個陣列。

let values = [1,2,3,4];

function getsum()

return sum;

}console.log(getsum(...values)); //10

二者的區別在於,函式宣告會被提公升,而函式表示式在進行到該行時才能夠定義函式。

js函式閉包

閉包的好處 希望乙個變數長期駐紮在記憶體當中 避免全域性變數的汙染 私有成員的存在 舉例 function f1 x var b f1 2 x 2 b 10 相當於b f2 b f2 故y 10 匿名函式 function 該方法經常在全域性作用域中被用在函式外部,從而限制向全域性作用域中新增過多的...

Js函式閉包

一 什麼是閉包 1.定義 如果在乙個內部函式裡,對在外部作用域 但不是全域性作用域 的變數進行引用,那麼內部函式就被認為是閉包。2.如何建立閉包 常見方式 在乙個函式內部建立另乙個函式。例 function createcomparsionfunction propertyname else if ...

JS函式閉包

閉包指的是那些引用了另乙個函式作用域中變數的函式,通常是在巢狀函式中實現的。函式執行時,每個執行上下文中都會有乙個包含其中變數的物件。全域性上下文中的叫變數物件,它會在 執行期間始終存在。而函式區域性上下文中的叫活動物件,只在函式執行期間存在。在定義函式時,就會為它建立作用域鏈,預裝載全域性變數物件...