用spidermonkey玩javascript - 可打印的版本 +- WeHack BBS (https://bbs.wehack.space) +-- 版块: 计算机技术 (https://bbs.wehack.space/forum-5.html) +--- 版块: 程序设计讨论区 (https://bbs.wehack.space/forum-14.html) +--- 主题: 用spidermonkey玩javascript (/thread-281.html) |
用spidermonkey玩javascript - vimacs - 07-15-2021 SpiderMonkey是Mozilla的javascript引擎,我的Arch里面安装了js78(版本78是来自Firefox-ESR 78的版本),是安装polkit的时候作为依赖安装的,没安装的话可以手动安装。运行js78就拿到一个REPL界面。 也可以先把js程序写好,用 ``js78 -i`` 加载,例如: 代码: $ cat fibonacci.js 在REPL里面跑了下fibonacci_iter(10000),发现SpiderMonkey,node,deno都报了栈深度超过最大值的异常,说明这些js解释器都没实现尾递归。 把这段程序改写成 ECMAScript (变量定义加上var,所有语句最后加上分号),用 guile --language=ecmascript (GNU Guile 2.2.7) 跑 fibonacci_iter(100000) 没报错并能输出结果,fibonacci_iter(1000000) 就很慢了。guile 跑 emcascript 程序居然不支持 guile -l 加载文件。 RE: 用spidermonkey玩javascript - vimacs - 07-15-2021 再试了一下Guile 3.0.7. 因为 Guile 3 有 JIT,跑 fibonacci_iter(1000000) 可以在可接受的时间内出结果了。 RE: 用spidermonkey玩javascript - vimacs - 07-15-2021 再测试了一下,Guile的ECMAScript环境可以支持任意精度整数,而SpiderMonkey和deno都不行,计算结果大了就返回NaN. 另外Guile的EMCAScript环境中要输出到stdout用的是display函数,应该是复用了Scheme的。 |