우리의 일상 개발에서, 우리는 종종 우리가 함수를 한 번만 실행하고, 특히 일부 루프 나 시간이 정해진 경우에만 실행하려는 상황에 직면합니다.
더 이상 고민하지 않고 코드를 업로드하기 만하면됩니다.
function runonce (fn, context) {// return function ()를 트리거하는 함수를 제어합니다 () {try {fn.apply (컨텍스트 || this, arguments); } catch (e) {console.error (e); // 일반적 으로이 줄을 주석 할 수 있습니다} 마지막으로 {fn = null; }}} // 사용법 1 : var a = 0; var canonlyfireonce = runonce (function () {a ++; console.log (a);}); CanonlyFireonce (); // 1canonlyfireonce (); // canonlyfireonce ()가 없습니다. // 사용법 2 : var name = "Zhang San"; var canonlyfireonce = runonce (function () {console.log ( "hello" + this.name);}); canonlyfireonce (); // hello Zhang San CanonlyFireOnce (); // 사용법 3 : var obj = {이름 : "세계의 외로운 거위", 나이 : 24}; var canonlyfireonce = runonce (function () {console.log ( "hello" + this.name);}, obj); canonlyfireonce (); // hello, tianya, canonlyfireonce (); // 아무것도 아님리턴 함수가 한 번 실행 된 후 FN = NULL은 NULL이 아니기 때문에 나중에 실행되지 않습니다. 온라인으로 다른 사람이 공유 한 다른 코드를 게시하면 원칙은 동일합니다.
한 번 함수 (fn, 컨텍스트) {var result; return function () {if (fn) {result = fn.apply (context || this, arguments); fn = null; } 반환 결과; };} // usagevar canonlyFireOnce = 일단 (function () {console.log ( 'fired!');}); CanonlyFireonce (); // "해고!" CanonlyFireonce (); // 아무것도 아님위의 것은 JavaScript가 한 번만 실행하도록하는 기능 예제의 모음입니다. 필요한 경우 참조 할 수 있습니다.