2016-04-16 40 views
0

Also habe ich etwas mit THREE.js herumgespielt und etwas Merkwürdiges bemerkt: Wenn Sie in Firefox die Entwicklerkonsole öffnen und camera.lookAt eingeben (vorausgesetzt, Ihre Kamera heißt camera), gibt sie function THREE.Camera.prototype.lookAt</<() aus.THREE.Camera.prototype.lookAt</ <() - Was bedeutet</ <?

Jetzt bin ich neugierig, was die </< bedeutet und wo es herkommt, soweit ich weiß, sind dies keine gültigen Zeichen in JavaScript-Funktionsnamen. Bisher habe ich das noch nicht gesehen oder bemerkt. Ich habe versucht, dies zu reproduzieren, aber ohne Erfolg.

Antwort

1

Es gibt Regeln, nach denen FireFox names für anonyme Funktionen angibt, um sie in der Konsole und im Call-Stack anzuzeigen. Und die Funktion lookAt ist anonymous.

Öffnen Sie den folgenden Code in FireFox, dann öffnen Sie die Konsole und geben Sie nonymous ein.

index.html:

<script> 
    var nonymous = function() { 
     return function() { 
     } 
    }(); 
</script> 

Konsole Ergebnis:

> nonymous 
< function nonymous</<() 

Weitere Informationen:

  1. Nonymous: Function-Object Consumption Naming Algorithm Implementation

  2. Splash Wavefront 2011 Papier: Naming Anonymous JavaScript Functions, von Salman Mirghasemi, John J. Barton, und Prof. Claude Petitpierre

  3. https://github.com/mozilla/gecko-dev/blob/master/js/src/vm/Debugger.cpp#L7720

  4. https://github.com/mozilla/gecko-dev/blob/master/js/src/doc/Debugger/Debugger.Object.md#accessor-properties-of-the-debuggerobject-prototype