1. 程式人生 > >js實現累加(閉包、柯里化)面試經驗分享

js實現累加(閉包、柯里化)面試經驗分享

閉包

今天面試需要手寫一段程式碼實現

	var a = sum();
	a.add(1);
	a.add(2);
	a.add(3);
	a.add(4);
	a.getResult();//打印出10

首先看到這個題,我先想到是考察閉包的使用,暫存計算過程中的資料,隨時可以列印結果。

	function sum(){
		    let a = 0;//let和var不受影響
			return {
			    add:function (b) {
			        console.log(this);//特意列印this,看到this指向的是return的物件例項,所以不能用this.a
					a = a+b;
                },
				result:function () {
					return a;
                }
			}
		}
		var d = sum();
		d.add(2)
        console.log(d.result())

列印結果顯示為8;