javascript - 用 Nodejs 写标准输出

标签 javascript node.js

我开始使用一些现代的 Javascript,我决定使用 Nodejs,因为它似乎是目前桌面上最流行的 JS 框架,我不明白为什么我的代码不起作用,我得到的相关错误消息。

考虑这个片段

var a = 5;
var func = function(){return arguments.length;};
process.stdout.write(+func(1,2,3,a));

它不起作用,并生成以下错误消息

net.js:612
    throw new TypeError('invalid data');
          ^
TypeError: invalid data
    at WriteStream.Socket.write (net.js:612:11)
    at Object.<anonymous> (var_1.js:3:16)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3

我是一名 C/C++ 程序员,这对我来说绝对是个谜,而且我在调用 func 之前使用了 + 来确保结果是 integer,那么为什么 write 一直在提示?

经过一些废话添加 + '\n' 使这段代码工作

var a = 5;
var func = function(){return arguments.length;};
process.stdout.write(+func(1,2,3,a) + '\n');

谁能解释一下这是怎么回事?

最佳答案

.write() 的第一个参数应为 StringBuffer。不允许使用 Number

process.stdout.write(func(1,2,3,a).toString());
process.stdout.write(String(func(1,2,3,a)));

加法运算符 (a + b) 在连接 '\n' 时隐式执行此转换。

关于javascript - 用 Nodejs 写标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26851860/

相关文章:

javascript - Gruntfile.js - 未找到任务 “default”

node.js - 如何覆盖 npm 安装版本检查失败?

Javascript 搜索多个参数

javascript - .filter jquery 错误

javascript - 应用已在进行中错误

node.js - 如何使用 azure-storage-node 按修改日期查询 Azure Blob

Javascript - 映射函数中的哈希数组

javascript - 为什么需要browserify `paths`定义?

javascript - 在 form.reset() 上保留选择字段占位符, Angular 为 6

javascript - 附加具有多个单引号的代码