在Windows命令提示符中运行JavaScript

10

我编写了以下的JavaScript代码,可以将二进制数转换成十进制数:

(function bin_dec(num) {
  var x = num;
  var result = 0;
  for (var i = 0; i < x.length; i++) {
    result += eval(x[x.length - i] * 2^i);
  }
  return result;
})()

我希望能够在命令行中运行此代码。文件名为converter.js,我正在与该文件相同的目录中运行命令提示符窗口。我尝试使用01001100作为函数参数来运行此代码。这是我的尝试:

$ converter.js 01001100

$ converter.js -01001100

$ converter.js bin_dec(01001100)

但不幸的是,这两个都不起作用。请有人指出我的错误吗?提前谢谢。


3
你有一个 IIFE(立即调用的函数表达式)……由于你编写的 IIFE,num 参数将始终为 undefined……除此之外……在命令行上运行 JavaScript……你认为它能正常工作吗?这样做时会出现任何错误吗?我猜你是在运行 Linux,对吗? - Jaromanda X
2
但是..你有没有任何可以从命令行解析和执行JS的工具?像NodeJS或类似的工具?此外,你有一个IIFE,因此没有函数声明存在(即bin_dec无法从外部访问)。另外,你不需要使用eval - Margaret Bloom
4个回答

12

1)如果您还没有安装Node.js,请先进行安装。

2)按照以下方式更改您的converter.js文件:

function bin_dec(num) {
  return parseInt(num, 2);
}

console.log(bin_dec(process.argv[2]));

3) 在脚本所在的文件夹中打开一个新的命令提示符并运行

$ node converter.js 01001100

Node.js 的 console.log() 功能非常强大。它可以解包和着色对象,并支持 Unicode!在 Node.js 安装过程中出现的关于编译 C/C++ 的提示似乎是可选的。即使不勾选该选项,基本功能也能正常使用。但我仍然希望知道缺少了什么。这里有相关信息。 - Bob Stein

4
在nodejs中,假设您已经安装了它,因为您正在尝试从命令提示符运行javascript,则必须引用process.argv数组以获取在命令行中传递的参数。因此,您的代码将需要像这样:
(function bin_dec(num) {
  var x = num;
  var result = 0;
  for (var i = 0; i < x.length; i++) {
    result += eval(x[x.length - i] * 2^i);
  }
  return result;
})(process.argv[2])

请注意传递给函数的process.argv[2]。这将使第一个参数作为num变量在您的函数内可用。

如果您想在屏幕上显示消息,还可以添加console.log,因为返回语句不会打印消息。


2
假设您正在运行Windows操作系统,可以这样调用它:
(function bin_dec() {
  var x = WScript.arguments(0);
  var result = 0;
  for (var i = 0; i < x.length; i++) {
    result += eval(x[x.length - i] * 2^i);
  }
  return result;
})()

在该函数中,所有传递到参数中的参数都存储在WScript.arguments中。
然而,这不会将return值输出到命令提示符,因此您可能希望使用此.js文件进行测试:
(function ShowAlert() {
  var x = WScript.arguments(0);
  WScript.ECho(x);
})()

请参阅以下链接以获取更多详细信息:

MSDN - Arguments 属性

SS64 - WScript 参数

SS64 - VBScript 命令行参数


1

您需要知道,在CLI中,像consolereturn语句这样的基本函数将无法使用。

如果您正在使用Windows,则可以使用类似于console.log'WScript.echo',在执行文件时确保按照以下方式进行:

Cscript.exe yourpath input_params,例如:Cscript.exe converter.js 01001100

因此,您的代码应该是:

(function bin_dec() {
    var x = WScript.arguments(0);
    var result = 0;
    for (var i = 0; i < x.length; i++) {
        result += eval(x[x.length - i] * 2^i);
    }
    WScript.echo(result);
})();

并且要运行它应该是

Cscript.exe converter.js 01001100

我希望这能对您有所帮助!如需了解更多关于CLI方法的信息,请访问以下链接。

https://msdn.microsoft.com/en-us/library/2795740w(v=vs.84).aspx


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接