我正在阅读NodeJS教程,我已到达this页面。
缓冲区对象的比较方法有一个示例代码:
var buffer1 = new Buffer('ABC');
var buffer2 = new Buffer('ABCD');
var result = buffer1.compare(buffer2);
if(result < 0) {
console.log(buffer1 +" comes before " + buffer2);
}else if(result == 0){
console.log(buffer1 +" is same as " + buffer2);
}else {
console.log(buffer1 +" comes after " + buffer2);
}
引发了这个:
执行程序.... $ node main.js
/web/com/1460883529_55644/main.js:3 var result = buffer1.compare(缓冲器2);
^ TypeError:对象ABC在Object上没有'compare'方法。 (/web/com/1460883529_55644/main.js:3:22)
在Module._compile(module.js:456:26)
at Object.Module._extensions..js(module.js:474:10)
在Module.load(module.js:356:32)
在Function.Module._load(module.js:312:12)
在Function.Module.runMain(module.js:497:10)
启动时(node.js:119:16)
at node.js:929:3
奇怪的是,在跟踪中,对象被称为ABC
而不是buffer1
,并且根据跟踪没有compare
方法。试图澄清compare
方法的例子使我感到困惑。有人能解释一下这里发生了什么吗?
答案 0 :(得分:1)
该教程站点使用的是Node v0.10,它非常陈旧,甚至不支持教程本身使用的方法!
该代码在当前版本的Node,v4.4.3以及任何其他最新版本中运行良好。 typeOf() input parameter
---------------------------
boolean true
boolean false
number 1
number 2.3
string "string"
array [4,5,6]
object {"foo":"bar"}
null null
undefined
的相关文档位于:https://nodejs.org/api/buffer.html#buffer_buf_compare_otherbuffer
另外,您可能希望停止使用compare()
支持更新的Buffer.from()
API。据说这可以提高代码安全性。