커링이란
커링은 여러 매개변수를 허용하는 함수 를 단일 매개변수를 허용하는 함수로 변환하는 변환 프로세스입니다. 매개변수(주석: 원래 함수의 첫 번째 매개변수). 다른 매개변수가 필요한 경우 나머지 매개변수를 받아들이고 결과를 반환하는 새 함수를 반환합니다.
Ke Lihua 함수 아이디어: js 전처리 아이디어로 함수 실행을 사용하여 파괴되지 않는 범위를 형성하는 원리; , 파기되지 않은 이 범위에 전처리해야 하는 모든 콘텐츠를 저장하고 작은 함수를 반환합니다. 이제부터 작은 함수에서는 이전에 저장된 항목에 대해 관련 작업을 수행할 수 있습니다.
커링 함수는 주로 전처리 역할을 합니다.
바인드 메서드의 역할: 통과 in 콜백 메소드에서
바인드 메소드 구현 원칙 1 코드는 다음과 같습니다.
/** * bind方法实现原理1 * @param callback [Function] 回调函数 * @param context [Object] 上下文 * @returns {Function} 改变this指向的函数 */ function bind(callback,context) { var outerArg = Array.prototype.slice.call(arguments,2); // 表示取当前作用域中传的参数中除了fn,context以外后面的参数; return function (){ var innerArg = Array.prototype.slice.call(arguments,0);//表示取当前作用域中所有的arguments参数; callback.apply(context,outerArg.concat(innerArg)); } }
다음 코드 조각은 프로토타입 체인의 바인딩 구현 원리를 모방합니다
/** * 模仿在原型链上的bind实现原理(柯理化函数思想) * @param context [Object] 上下文 * @returns {Function} 改变this指向的函数 */ Function.prototype.mybind = function mybind (context) { var _this = this; var outArg = Array.prototype.slice.call(arguments,1); // 兼容情况下 if('bind' in Function.prototype) { return this.bind.apply(this,[context].concat(outArg)); } // 不兼容情况下 return function () { var inArg = Array.prototype.slice.call(arguments,0); inArg.length === 0?inArg[inArg.length]=window.event:null; var arg = outArg.concat(inArg); _this.apply(context,arg); } }
커링 함수(Currying)
컴퓨터 과학에서 커링은 여러 매개변수를 받는 함수를 단일 매개변수(원래 함수의 첫 번째 매개변수)를 받는 함수로 변환하고, 나머지 매개변수를 받아 결과를 반환하는 새로운 함수를 반환하는 기술이다. 🎜>
커링이란 간단한 기능을 얻기 위해 특정 매개변수를 미리 전달하는 것입니다. 하지만 미리 전달된 매개변수는 클로저에 저장되기 때문에 몇 가지 특이한 특징이 있을 것입니다. 예: 예:var adder = function(num) { return function(y) { return num + y; } } var inc = adder(1); var dec = adder(-1); //inc, dec现在是两个新的函数,作用是将传入的参数值(+/-)1 alert(inc(99));//100 alert(dec(101));//100 alert(adder(100)(2));//102 alert(adder(2)(100));//102