In diesem Artikel geht es darum, wie man die Anzahl der Funktionsausführungen in JavaScript zählt. (Ausführliche Erklärung) hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.
1. Zählen Sie die Anzahl der Funktionsausführungen
Die herkömmliche Methode kann darin bestehen, die Ausgabe von console.log zu verwenden, um visuell zu berechnen, wie viele Ausgaben es gibt
Aber in Chrome gibt es eine integrierte console.count-Methode, die zählen kann, wie oft eine Zeichenfolge ausgegeben wird. Wir können dies verwenden, um indirekt die Anzahl der Ausführungen der Funktion zu zählen
function someFunction() { console.count('some 已经执行'); } function otherFunction() { console.count('other 已经执行'); } someFunction(); // some 已经执行: 1 someFunction(); // some 已经执行: 2 otherFunction(); // other 已经执行: 1 console.count(); // default: 1 console.count(); // default: 2
Ohne Parameter ist dies der Standardwert, andernfalls wird die Anzahl der Ausführungen der Zeichenfolge ausgegeben, was sehr praktisch zu beobachten ist
Wenn Sie zusätzlich zur Ausgabe der Anzahl auch eine reine Anzahl erhalten möchten, können Sie die Funktion natürlich mit einem Dekorator umschließen und das Objekt verwenden, um die Anzahl der Aufrufe intern zu speichern
var getFunCallTimes = (function() { // 装饰器,在当前函数执行前先执行另一个函数 function decoratorBefore(fn, beforeFn) { return function() { var ret = beforeFn.apply(this, arguments); // 在前一个函数中判断,不需要执行当前函数 if (ret !== false) { fn.apply(this, arguments); } }; } // 执行次数 var funTimes = {}; // 给fun添加装饰器,fun执行前将进行计数累加 return function(fun, funName) { // 存储的key值 funName = funName || fun; // 不重复绑定,有则返回 if (funTimes[funName]) { return funTimes[funName]; } // 绑定 funTimes[funName] = decoratorBefore(fun, function() { // 计数累加 funTimes[funName].callTimes++; console.log('count', funTimes[funName].callTimes); }); // 定义函数的值为计数值(初始化) funTimes[funName].callTimes = 0; return funTimes[funName]; } })(); function someFunction() { } function otherFunction() { } someFunction = getFunCallTimes(someFunction, 'someFunction'); someFunction(); // count 1 someFunction(); // count 2 someFunction(); // count 3 someFunction(); // count 4 console.log(someFunction.callTimes); // 4 otherFunction = getFunCallTimes(otherFunction); otherFunction(); // count 1 console.log(otherFunction.callTimes); // 1 otherFunction(); // count 2 console.log(otherFunction.callTimes); // 2
So steuern Sie die Anzahl der Funktionsaufrufe
Sie können auch Abschlüsse verwenden, um die Anzahl der Ausführungen einer Funktion zu steuern
function someFunction() { console.log(1); } function otherFunction() { console.log(2); } function setFunCallMaxTimes(fun, times, nextFun) { return function() { if (times-- > 0) { // 执行函数 return fun.apply(this, arguments); } else if (nextFun && typeof nextFun === 'function') { // 执行下一个函数 return nextFun.apply(this, arguments); } }; } var fun = setFunCallMaxTimes(someFunction, 3, otherFunction); fun(); // 1 fun(); // 1 fun(); // 1 fun(); // 2 fun(); // 2
Das obige ist der detaillierte Inhalt vonWie zähle ich die Anzahl der Funktionsausführungen in Javascript? (ausführliche Erklärung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!