问题标签 [javascript-engine]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - “文档”未在java脚本引擎
我正在尝试使用 scriptEngine 在 java 中调用文档这是我的代码
它抛出一个异常
javascript - eval() 关键字究竟是如何破坏 javascript 中的编译器优化的
我读过应该避免使用 eval() 关键字,因为它会欺骗词法范围(这会导致代码运行速度变慢)。根据上述示例(或任何其他示例)的上下文,我试图了解这可能最终会破坏哪种编译器优化。
看这条线 newVar = 100; 这个变量也将在执行阶段由引擎(在全局范围内)创建。我不认为这等于“欺骗”词汇范围。那么 eval("bar = 42;") 的问题是什么,它本质上做了类似的事情?希望问题很清楚。
compilation - 语言引擎 VS。运行时 VS。处理虚拟机
由于 JavaScript 的日益流行,我发现(即使在同一次演讲中)听到关于 JavaScript引擎、JavaScript虚拟机或 JavaScript解释器,在相同的上下文中并提到相同的东西很有趣。
因此,我试图做一些研究,为什么所有这些流行语会同时共存(一定是有原因的),以及它们之间是否存在一些真正的(尽管微小的)差异。
我试图从许多不同的来源(我在以下几行中引用)总结到目前为止我学到的东西。如果我对某些事情有错误/误导,请随时纠正我。
尽管我发现它们的运行时职责基本相同,但我也发现了一些主要区别:
处理虚拟机
- 是最复杂的(甚至实现了 IO、虚拟指令集 等)
- 始终包括口译员 + 中间语言
- 除此之外还可能包括编译(即时和/或动态重新编译)
- 应用程序仅在 VM 进程内作为线程运行
- 耦合到运行时环境
- 示例:Java 虚拟机、Dalvik 虚拟机
运行时
语言引擎
- 更轻巧
- 可以使用解释器或编译(即时和/或动态重新编译)
- 与底层环境/操作系统解耦
- 示例:所有 JavaScript 引擎、Zend 引擎
问题:
上面的列表是否准确,或者它只是基于使用相同面额的大多数常见运行时系统之间完全巧合的相似性的副产品?
还有其他值得注意的区别吗?
javascript - Unable to correctly write ternary operator in JavaScript
I have an undefined variable and I check it in a string concat:
Considering that undefinedVariable is undefined, undefinedVariable.toString()
is an unreachable code. However, I get this error:
Uncaught TypeError: Cannot read property 'toString' of undefined(…)
The strange thing is if I remove "foo" at the start of console.log, then the code works fine.
I have tested in chrome and firefox and I get the same result so probably it is not a bug. Is there any explanation why JS engines try to run the unreachable part?
javascript - 如何确定哪个 javascript 引擎、rhino 或 nashorn 正在运行我的代码?
如何确定浏览器中的javascript引擎有几个问题。我必须编写必须在 rhino 和 nashorn 上运行的 javascript 代码。
如何确定我的代码是在 rhino 还是 nashorn 上运行?是否有可以确定引擎的典型函数、变量、常量?
java-8 - 如何创建和返回谓词来自 Nashorn 引擎 java 8
如何在 java 8 中从 ScriptEngine 创建谓词并将其返回给 java 程序?
谓词条件是运算符和它们的比较值,数量很多。所以我想从 javaScript Engine 中获取谓词,如下所示:
这里的运算符可以是 >=、<=、>、< 等。这只是实际问题的一个更简单的版本。我如何从 nashorn 创建谓词,之后我就可以开车了。
javascript - 是 javascript 解释还是 jit 编译
我是编程新手。我正在关注关于 javascript 的教程。但我对 jit 编译器和解释器感到困惑。javscript 是否从源代码转换为字节/本机代码。使用 jit 编译器还是解释器?或者取决于您正在运行的浏览器和 javascript 引擎。
感谢您的回复
firefox - Firefox 使用什么作为 js 引擎 SpiderMonkey 或 IonMonkey
当我读到这个关于 SpiderMonkey 的维基百科页面时,我感到很困惑
什么 Firefox 当前用于 js SpiderMonkey、IonMonkey、JägerMonkey 或它们的组合?
谢谢
javascript - 了解 JS 引擎如何循环获取数组元素的索引
我写了一个函数来输出排队等候的人的姓名和现实生活中的索引。
当我运行该函数时,输出为:
The line is currently: 1. Sarah, 2. Mike, -1. Bob
JavaScript 引擎如何解释循环?鲍勃-1怎么样?上次我检查了 2 + 1 = 3。
我想自己解决这个问题,但我试图了解这个看似直截了当的循环中发生了什么。
javascript - 考虑未知 Javascript 引擎的代码,哪些因素对执行速度和内存节省影响最大?
然后,我想,更完整的问题是,“当 Javascript 引擎已知时(基于每个流行的引擎),这些考虑因素如何受到影响。”
我觉得我需要问“社区”的原因是因为像 Strongloop 这样创建 Node.js 之类的东西的人,也编写了 util.inherits 之类的代码,一个函数在其中,而不是:TheConstructorFunction.prototype.constructor = TheConstructorFunction
他们创建了一个属性定义,它本身有 4 个属性正在设置:
这对我来说似乎效率低下,但是,与这样的代码作者相比,我只是努力编写更好的 Javascript 3 年。有没有解释为什么这有效或无效?
一个答案说 util.inherits 并不是低效的,因为子类操作很少见。但是考虑到一些库处理在构建到测试结果观察之间发生的成百上千的子类操作,如果 Node.js 内部使用 util.inherits,那么这会影响其使用者的开发时间。我认为,在这个级别上,效率确实很重要,我希望 util.inherits 不会在内部使用。我什至不明白 util.inherits 的目的。为什么要拥有它?我认为它促进了复合效率低下。 require('util').inherits(C1,C2);
几乎是同义词,可能比C1.prototype=Object.create(C2.prototype); C1.prototype.constructor=C1;
如果它只是为了吸引消费者,我很冷静。我担心这些专业人士是否在内部使用该功能,因为更大的库将取决于 Node.js 的效率。至于制作.constructor
不可枚举......我认为它的“可枚举性”很重要的情况很少见,应该留给消费者,但如果内部操作取决于 util.inherits,这并不是真的留给消费者。