当前位置: 首页 > news >正文

bellard.org‌ : QuickJS 如何使用 qjs 执行 js 脚本

参阅上一篇:Fabrice Bellard(个人网站:‌bellard.org‌)介绍

Fabrice Bellard(个人网站:‌bellard.org‌)是计算机领域最具影响力的程序员之一,其贡献跨越多个技术领域并持续推动开源生态发展。

QuickJS
小型嵌入式JavaScript引擎,强调低内存占用与ES6规范支持,适用于IoT设备与脚本扩展开发。

从 bellard.org 下载 quickjs-2025-04-26.tar.xz 到 D:\tcc\ , 然后解压。
从 bellard.org 下载 quickjs-cosmo-2025-04-26.zip 到 D:\tcc\ , 然后解压。看 readme.txt

D:\tcc\quickjs-cosmo-2025-04-26> rename qjs qjs.exeD:\tcc\quickjs-cosmo-2025-04-26> qjs -h
QuickJS version 2025-04-26
usage: qjs [options] [file [args]]
-h  --help         list options
-e  --eval EXPR    evaluate EXPR
-i  --interactive  go to interactive mode
-m  --module       load as ES6 module (default=autodetect)--script       load as ES6 script (default=autodetect)
-I  --include file include an additional file--std          make 'std' and 'os' available to the loaded script
-T  --trace        trace memory allocation
-d  --dump         dump the memory usage stats--memory-limit n  limit the memory usage to 'n' bytes (SI suffixes allowed)--stack-size n    limit the stack size to 'n' bytes (SI suffixes allowed)--no-unhandled-rejection  ignore unhandled promise rejections
-s                    strip all the debug info--strip-source    strip the source code
-q  --quit         just instantiate the interpreter and quit

计算圆周率 pi ,用 BigInt :
copy D:\tcc\quickjs-2025-04-26\examples\pi_bigint.js D:\tcc\quickjs-cosmo-2025-04-26\
cd D:\tcc\quickjs-cosmo-2025-04-26
 qjs pi_bigint.js 100
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679

为了计算 斐波那契数列(Fibonacci sequence),编写 fib_bigint.js  如下

/** Fibonacci sequence computation in Javascript using the BigInt type*/
"use strict";function calc_fib(n)
{var a = BigInt(0);var b = BigInt(1);var c = BigInt(0);if (n <= 0)return a;for (var i = 2; i <= n; i++) {c = a + b;a = b;b = c;}return b;
}function main(args) {var r, n, n_bits, out;if (args.length < 1) {print("usage: qjs fib_bigint.js  n_digits");return;}n = args[0] | 0;if (n <=0) return;var r = calc_fib(n);var result = r.toString();print(result);
}var args;
if (typeof scriptArgs != "undefined") {args = scriptArgs;args.shift();
} else if (typeof arguments != "undefined") {args = arguments;
} else {/* default: 100 digits */args=[100];
}main(args);

cd D:\tcc\quickjs-cosmo-2025-04-26
运行  qjs fib_bigint.js 365
8531073606282249384383143963212896619394786170594625964346924608389878465365

校验,运行 python fibonacci.py 365
F(365): 8531073606282249384383143963212896619394786170594625964346924608389878465365

http://www.xdnf.cn/news/266545.html

相关文章:

  • 施磊老师rpc(三)
  • Docker安装Ollama及使用Ollama部署大模型
  • 二极管反向恢复的定义和原理
  • SQL语句--postgis语句(矢量数据的定义与操作)
  • REINFORCE蒙特卡罗策略梯度算法详解:python从零实现
  • STM32 DMA直接存储器存取
  • 解码响应式 Web 设计:原理、技术与优劣势全解析
  • C++代码随想录刷题知识分享-----142.环形链表II
  • 希洛激活器策略思路
  • n8n工作流自动化平台的实操:Cannot find module ‘iconv-lite‘
  • 生成式 AI 与 AI 的区别
  • DeepSeek实战--LLM微调
  • LeetCode算法题 (设计链表)Day16!!!C/C++
  • 「Mac畅玩AIGC与多模态16」开发篇12 - 多节点串联与输出合并的工作流示例
  • ipvsadm,是一个什么工具?
  • 中国 AIGC 确权革命:“AI 创意・中国” 平台上线,存证成本降至 0.1 元 / 件
  • CAN网桥中继隔离抗干扰集线器重映射一进一出CAN扩展CAN Bridge
  • 在Java项目中实现本地语音识别与热点检测,并集成阿里云智能语音服务
  • Dubbo(92)如何在微服务架构中应用Dubbo?
  • 深入理解C++类型转换:从基础到高级应用
  • 糖尿病筛查常识---秋浦四郎
  • 计网_可靠传输ARQ机制
  • neo4j初尝试
  • Java从入门到精通 - Java语法
  • C++ 简单工厂模式详解
  • QT6 源(72):阅读与注释单选框这个类型的按钮 QRadioButton,及各种属性验证,
  • 【Linux知识】find命令行使用详解
  • 数据结构*队列
  • nessus最新版本安装教程+windows一键更新最新插件
  • 计算机网络-同等学力计算机综合真题及答案