Buffer有比较方法吗?

时间:2016-04-17 10:00:33

标签: node.js

我正在阅读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方法的例子使我感到困惑。有人能解释一下这里发生了什么吗?

1 个答案:

答案 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。据说这可以提高代码安全性。