问题标签 [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.
javascript - Javascript 引擎如何在浏览器中执行 Javascript?
问题不是解决方案,问题是为了更好地了解系统
专家!我知道每当您将 javascript 代码输入 javascript 引擎时,它都会立即由 javascript 引擎执行。由于我没有看过Engine的源代码,所以我有以下几个问题,
让我们假设我正在从远程服务器加载几个文件,即 FILE_1.js 和 FILE_2.js。并且 FILE_2.js 中的代码需要 FILE_1.js 中的一些代码。所以我包含了如下文件,
所以希望我已经完成了 Javascript 引擎的要求。不幸的是,我在 FILE_1.js 中编写了 5000KB 的代码,但是我在 FILE_2.js 中有 5KB 的代码。由于服务器是多线程的,因此 FILE_2.js 肯定会在 FILE_1.js 完成之前加载到我的浏览器中。
javascript引擎如何处理这个?
如果将代码从 FILE_2.js 移动到 inline-script 标记,如下所示,javascript 引擎采取了哪些措施来管理这种依赖关系?
注意:我不希望单字回答单线程。我只想深入了解谁在管理浏览器或javascript引擎或普通人的发出请求?如果请求/响应是由普通人处理的,那么 javascript 引擎如何意识到这一点?
javascript - 如何查看内置 JavaScript 函数的来源?
例如,alert()、Object()、String() 等。如何查看这些函数背后的代码?
我需要了解引擎(例如V8)的编写语言并通读,还是有更简单的解决方案?
java - 在 Java 中调用 JavaScript 函数
我正在尝试在 Java 项目中使用 javascript 代码发送电子邮件。数据库连接工作正常,我已经测试过了。我收到错误: javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorException: missing) 在第 1 行的形式参数 (#1) 之后
javascript - Javascript JSON.stringify 函数不起作用
我试图将 JS 对象转换为 JSON。
本机 JSON stringify 未按预期工作。JSON stringify 在内部执行 JS 对象中的 toJSON 函数。我已经覆盖了本机代码,如下所示,
它工作正常。还有其他更好的方法吗?本机代码中是否有任何特定原因在输入对象中执行toJSON函数?
java - Java中JavaScript引擎中的未定义对象
在Java7中执行以下代码
我得到错误
是否有一个选项可以为未定义的对象评估为 null/false,比如在 JavaScript 中?
我知道一个选项将是执行类似“this.x&this.y”而不是“x&y”的操作,但我无法控制该字符串(用户输入)。
javascript - javascript 是否将(默认情况下)未声明的变量声明到当前本地范围(基于首次使用)而不是全局范围?
这可以通过编写一些代码来拦截全局范围默认声明或通过每个程序或函数都可以访问的javascript引擎本身的设置来完成吗?
我的意思是,如果我可以在程序(或函数)的顶部告诉 javascript 引擎对未声明的变量使用本地范围而不是全局范围......那么,当 javascript 引擎编译每个函数时,它会声明它们在本地范围内。
我理解如果你想在当前范围之外声明一个变量,那应该明确地完成,因为没有人知道你想在哪里声明它,但我认为默认为全局范围会留下太多的错误空间并强制输入过多的 var每个函数中的语句,所以如果可能的话,我想更改我的程序中的默认值。
我的主要目的是避免在每个函数顶部的 var 语句中键入局部变量列表,并避免在我在函数中使用局部变量时保持该列表与局部变量同步。不允许全局范围默认值也降低了出错的风险。
我绝不希望未声明的变量最终处于比首次使用它们的范围更高的范围内。让它们默认为我可以看到的全局范围没有任何价值。
我知道我可以在当前范围(或全局范围)中显式声明变量,但希望避免这样做并使用比 JavaScript 内置的全局范围默认值更有用的默认值。
我也知道我可以使用“使用严格”来强制明确声明所有变量。不想争论它的对错,而只是询问是否有任何方法可以将给定函数的默认值更改为本地范围而不是全局范围。
java - 在 Android 编程中使用 javax.script 的问题
我是 Android 编程新手,我正在尝试为 Android 制作一个计算器,我想使用 javax.script,我添加了 jar 文件库,我可以导入这些:
但是当我宣布这一点时:
我的应用程序无法运行。它显示“您的应用不幸停止了”。请让我知道如何将其用于我的应用程序。先感谢您。
logcat 中的错误是:
java - ScriptEngine eval 中的 ReferenceError
我在 JDK 7 中使用 JavaScript 引擎。有没有办法评估一个表达式,比如a||b
如果a
和b
未定义,而不是抛出异常ReferenceError: "a" is not defined.
?
javascript - V8中“隔离”的作用是什么?怎么可能孤立地制作“隔离”?
到目前为止我发现的“隔离”的解释。
经验 #1:http: //izs.me/v8-docs/classv8_1_1Isolate.html
“Isolate 表示 V8 引擎的一个隔离实例。V8 隔离具有完全独立的状态。来自一个隔离的对象不得在其他隔离中使用。当 V8 初始化时,会隐式创建并输入默认隔离。嵌入器可以创建其他隔离和在多个线程中并行使用它们。在任何给定时间最多可以有一个线程进入隔离。Locker/Unlocker API 可用于同步。”
经验 #2:https ://developers.google.com/v8/get_started
“隔离是一个拥有自己堆的虚拟机实例。”
好的我明白了。“隔离”是一个可以单独操作的隔离线程。以下是我的问题。
它看起来对我来说只是线程,除了它有自己的堆。有什么区别吗?
我认为“隔离”可用于实现并发 GC。上面的定义说每个“隔离”不能用于其他“隔离”。但是并发 GC 应该检查(或标记)主(或其他)线程(或 Isolate)的活动对象。怎么可能?
怎么可能保护自己的对象?“隔离”是线程而不是进程。因此,如果其他线程知道地址,则可以访问该线程的对象。怎么可能保护它?而且我无法理解自己的堆的含义。因为如果其他线程知道地址,它可以被其他线程访问。并且普通线程可以在内存空间中有它们的堆。由于堆的地址空间没有完全分开,但是如果一个线程 malloc 内存,除非其他人知道地址,否则其他线程如何使用它?每个线程只是 malloc 自己的堆空间和“隔离”有自己的堆空间有什么区别?
我的问题可以很容易地概括为“隔离”的作用是什么,怎么可能有自己的堆空间,为什么必须有自己的堆。
如果有人分享一些关于“隔离”的好文档,那将非常有帮助。谢谢阅读。
---- 把问题说清楚---- 我的问题的重点是问:是什么让google 在V8 中实现isolate?隔离的好处是什么?在 V8 中使用隔离的一个很好的例子是什么?他们(隔离)同时执行什么?
javascript - chrome能理解编译好的javascript吗?
不是让 V8 即时编译 JavaScript然后执行它,难道不能只预先编译 JavaScript 然后将机器代码嵌入页面而不是将 JavaScript 嵌入页面吗?