如何将字符串写入Javascript的标准输出

时间:2014-03-19 12:50:12

标签: javascript node.js rhino java-8 nashorn

我感兴趣的是一种将字符串写入标准输出的可移植方式,没有添加到最后的隐式换行符,理想情况下强制编码为UTF-8,适用于

  • jrunscript(来自任何JDK)
  • 犀牛
  • 的node.js

我当前的代码尝试检测它的运行位置,然后使用特定于平台的写入方法:

  if (typeof process !== "undefined") {     // assume node.js
    var log = function(string) {process.stdout.write(string);};
  }
  else if (typeof println == "undefined") { // assume rhino
    var log = function(string) {java.lang.System.out.write(java.lang.String(string).getBytes("utf-8"));};
  }
  else {                                    // assume jrunscript
    var log = function(string) {java.lang.System.out.print(string);};
  }
  log("X");
  log("Y");

应该导致:

  XY

这可以做得更好吗?

对于jrunscript,我一直在使用函数print,但是代表JDK-8021773改变了它在JDK-8中的行为。

1 个答案:

答案 0 :(得分:3)

  

我对一种可移植的写作方式感兴趣   字符串到标准输出,没有添加到最后的隐式换行符,理想情况下强制   编码为UTF-8,适用于......

没有,因为javascript没有"系统apis"。 JS核心是有限的,你需要使用javascript引擎运行的环境中的api。

  

我当前的代码尝试检测它的运行位置,然后使用a   特定于平台的写入方法。但我宁愿摆脱它​​。

这是你唯一可以做的事情。

编辑:javascript规范在这里:http://es5.github.io/它简短,标准输出或标准输入有0个概念,因为没有javascript标准库。