【发布时间】:2020-04-08 01:06:31
【问题描述】:
我已经将输入读取为一个字符串,并且在将其拆分后,该字符串变成了一个对象。
process.stdin.resume();
process.stdin.setEncoding('utf8');
process.stdin.on('data',(c)=>{
in += c;
});
process.stdin.on('end',()=>{
spliter(in);
});
function spliter(in){
console.log(typeof(in));
in = in.split('\n');
console.log(typeof(in));
}
【问题讨论】:
-
字符串在哪里发生了变异?这个全局变量
in += c;,你称之为像spliter(in)这样的分割器在你发布的代码中没有改变......参数in,你变成了一个数组,但你没有“改变一个字符串” -
数组是 JavaScript 中的一种对象。
typeof []将返回object。如果你想确定它是否真的是一个数组,你可以使用它在 Array 构造函数上找到的 isArray 方法:Array.isArray([])returns true -
此外,字符串在 JavaScript 中不是不可变的。不知道你从哪里得到这个误解。只有 const 声明的变量是不可变的。
-
@JacobPenney - 你确定吗?关于 javascript 的每一点文档都不同意你的观点
-
@JacobPenney 字符串(以及所有原语)在 JS 中是不可变的。他们的原型不是,但这是另一个问题......
标签: javascript arrays string split