THREE.Camera.prototype.lookAt </ <() - Что означает </ <?

Поэтому я немного поигрался с THREE.js и заметил нечто странное: в Firefox, когда вы открываете консоль разработчика и вводите camera.lookAt(если ваша камера называется camera), это выводит function THREE.Camera.prototype.lookAt</<(),

Теперь мне любопытно, что </<означает и откуда это, насколько я знаю, это недопустимые символы в именах функций JavaScript. До сих пор я не видел и не заметил этого раньше. Я пытался воспроизвести это, но безуспешно.

1 ответ

Решение

Существуют правила, согласно которым FireFox дает names для анонимных функций для отображения их в консоли и в стеке вызовов. И функция lookAt является анонимным

Откройте код ниже в FireFox, затем откройте консоль и введите nonymous,

index.html:

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

консольный результат:

> nonymous
< function nonymous</<()

Больше информации:

  1. Nonymous: Реализация алгоритма именования потребления объекта-функции

  2. Документ Splash Wavefront 2011: именование анонимных функций JavaScript, автор Салман Миргасеми, Джон Дж. Бартон и профессор Клод Петитпьер

  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

Другие вопросы по тегам