js學習六-閉包
閉包:
def:函式內部定義的子函式用到了父函式內部的變數,形成的特定作用域
功能:
1.儲存函式的執行狀態
code:
‘a1c2f3g4’中的數字依次用[‘b’.’d’,’e’,’h’]替換
//count變數會儲存在閉包作用域內,表示func被呼叫的次數
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Closure1</title>
</head>
<body>
<script type="text/javascript">
var arr = ['b','d','e','h'];
var str = 'a1c2f3g4';
var func = (function() {
var count = 0;
return function() {
return arr[count++];
}
})();
str = str.replace(/\d/g, func);
console.log(str);
// abcdfegh
//不使用閉包
function sum(i, j) {
var add = function (i, j) {
return i+j;
}
return add(i, j);
}
var startTime = new Date();
for(var i=0;i<1000000;i++) {
sum(1, 1);
}
var endTime = new Date();
console.log(endTime-startTime)
//49
//使用閉包
var sum = (function () {
var add = function(i, j){
return i+j;
}
return function(i,j){
add(i,j);
}
})()
var startTime = new Date();
for(var i=0;i<1000000;i++) {
sum(1, 1);
}
var endTime = new Date();
console.log(endTime-startTime)
//4
</script>
</body>
</html>
2.封裝
私有變數,不被外部呼叫
3.效能優化
由於作用域的範圍,節約了執行時間
first-class function(函式即變數):
功能如下:
1.函式可以當做引數
非同步回撥函式例如ajax
2.函式作為返回值
①Function.prototype.bind()此方法與function.apply(obj,param)方法類似
是指先繫結不作操作,如若執行則需要Function.prototype.bind()()
返回的是函式引用不是函式值
code:
var move = function (x,y) {
this.x += x;
this.y += y;
};
var p = {x:1,y:1};
var pmove = move.bind(p,2,2);
console.log(p)
// Object {x: 1, y: 1}
pmove();
console.log(p)
// Object {x: 3, y: 3}
②curry柯里化
相關文章
- 深入學習js之——閉包#8JS
- JavaScript:閉包學習JavaScript
- 學習Javascript閉包JavaScript
- 閉包方法的學習
- 學習Javascript閉包(Closure)JavaScript
- JS學習理解之閉包和高階函式JS函式
- 深入學習作用域和閉包—全面(JS系列之二)JS
- 你不懂的JS學習筆記(作用域和閉包)JS筆記
- 大資料學習:閉包大資料
- go 閉包學習筆記Go筆記
- Python學習筆記 - 閉包Python筆記
- JS閉包ClosureJS
- js--閉包JS
- js-閉包JS
- 在學習java之餘,js的使用精髓-閉包和原型鏈JavaJS原型
- js函式閉包JS函式
- js閉包的理解JS
- 淺談js閉包JS
- js中的閉包JS
- js閉包測試JS
- js閉包及閉包的經典使用場景JS
- AngularJS學習日記(六)ChartsAngularJS
- 學習一下閉包函式 - Closures函式
- 對JS閉包的理解JS
- JS中的 閉包(Closure)JS
- JS進擊之路:閉包JS
- JS作用域與閉包JS
- JS閉包作用域解析JS
- 深入理解JS閉包JS
- [JS]什麼是閉包?JS
- js閉包面試題目JS面試題
- js閉包,圓形,物件JS物件
- JS閉包函式概念JS函式
- 【Go語言學習】匿名函式與閉包Go函式
- 零基礎學習 Python 之閉包Python
- javascript之溫習閉包JavaScript
- JS閉包的簡易使用JS
- js閉包簡單總結JS