2016-04-16 172 views
0

所以我一直在玩THREE.js,并注意到一些奇怪的东西: 在Firefox中,当您打开开发者控制台并输入camera.lookAt(假设您的相机名为camera),它会输出function THREE.Camera.prototype.lookAt</<()THREE.Camera.prototype.lookAt</ <() -</ <是什么意思?

现在我很好奇</<意味着什么以及它来自哪里,据我所知这些都是JavaScript函数名称中的无效字符。到目前为止,我还没有看到或注意到这一点。我试图重现这一点,但没有成功。

回答

1

有一些规则,根据FireFox为哪些匿名函数提供names以在控制台和调用堆栈中显示它们。而功能lookAtanonymous

在FireFox中打开下面的代码,然后打开控制台并键入nonymous

的index.html

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

控制台结果

> nonymous 
< function nonymous</<() 

更多信息:

  1. Nonymous: Function-Object Consumption Naming Algorithm Implementation

  2. 飞溅波前2011纸:Naming Anonymous JavaScript Functions,萨尔曼Mirghasemi,约翰J.巴顿,和克劳德教授珀蒂皮埃尔

  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