【发布时间】:2014-05-03 19:21:06
【问题描述】:
据我所知,Asm.js 只是对 JavaScript 的严格规范,它使用了 JavaScript 的特性,并不是一门新语言。
例如,它不使用var a = e;,而是提供var a = e|0;。
我的问题是,如果 asm.js 只是一个定义,可以通过改变使用和声明变量和动态类型的方式来实现,那么 "use asm"; 究竟做了什么?是否需要在声明函数体之前放置这个字符串?
【问题讨论】:
-
这是一个声明,让受支持的 JS 引擎知道您提供 asm.js 优化代码的意图,因此会尝试这些优化。我想我记得听说 V8 在没有声明的情况下实现了这些优化。不过不确定。
-
您应该在这里阅读 ASM 以更好地理解它。 ejohn.org/blog/asmjs-javascript-compile-target
-
@cookiemonster 我无法通过优化理解你的意思。开发人员创建的这种优化,对吗?看看我在问题中写的按位运算。
-
不,引擎本身提供的优化。这些优化需要非常具体的语法,需要由开发人员编写(或者更有可能由代码生成器生成)。在不支持此类优化的实现中,代码可能会比以典型方式编写的 JS 代码运行得慢。
-
就像“使用严格”,严格的JS也是常规JS的子集。因此,您告诉引擎(以向后兼容的方式)您正在使用该子集,并且可以遵循稍微不同的规则
标签: javascript emscripten asm.js