Heim > Web-Frontend > js-Tutorial > Hauptteil

Teilen Sie die seltsame Art und Weise, JS zu schreiben, um festzustellen, ob ein Element eine Zahl ist

黄舟
Freigeben: 2016-12-12 11:37:22
Original
1153 Leute haben es durchsucht

Es handelt sich um jede Methode

代码如下:
var each = _.each = _.forEach = function(obj, iterator, context) { 
if (obj == null) return; 
if (nativeForEach && obj.forEach === nativeForEach) { 
obj.forEach(iterator, context); 
} else if (obj.length === +obj.length) { 
for (var i = 0, l = obj.length; i < l; i++) { 
if (iterator.call(context, obj[i], i, obj) === breaker) return; 
} 
} else { 
for (var key in obj) { 
if (_.has(obj, key)) { 
if (iterator.call(context, obj[key], key, obj) === breaker) return; 
} 
} 
} 
};
Nach dem Login kopieren

In dieser Methode gibt es einen Satz:

if (obj.length === +obj.length)
Nach dem Login kopieren

Dieser Satz entspricht

if (typeof obj.length === &#39;number&#39;)
Nach dem Login kopieren

, der verwendet wird Elemente beurteilen Ob es sich um einen numerischen Typ handelt. typeof und Object.prototype.toString sind gängige Schreibweisen. Letzteres ist ungewöhnlich und für den Normalbürger schwer zu verstehen.

Einige Bibliotheken verfügen über Toolfunktionen zur Typbeurteilung, wie z. B.

代码如下:
function isNumber1(a){ 
return typeof a === &#39;number&#39; 
}
Nach dem Login kopieren

oder verwenden Sie Object.prototype.toString

代码如下:
function isNumber2(a) { 
return Object.prototype.toString.call(a) === &#39;[object Number]&#39; 
}
Nach dem Login kopieren

, um es dahingehend zu ändern Schreibweise

代码如下:
function isNumber3(a){ 
return a === +a 
}
Nach dem Login kopieren

Getestet mit verschiedenen Typen

代码如下:
var arr = [&#39;1&#39;, true, false, undefined, null, {}, [], 1] 
for (var i=0; i<arr.length; i++) { 
console.log(isNumber3(arr[i])) 
}
Nach dem Login kopieren

Das Ergebnis ist, dass nur das letzte Element im Array wahr ist. Das heißt, nur der numerische Typ a === +a ist wahr.
Warum nicht typeof verwenden? Weil der String-Vergleich theoretisch alle Zeichen durchlaufen muss und die Leistung direkt proportional zur Länge des Strings ist.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!