素材牛VIP会员
菜鸟教程中node语法写法的疑问,为什么语法中要加中括号?
 非***扰  分类:JavaScript  人气:906  回帖:3  发布于6年前 收藏

Node缓冲区拷贝语法为:

buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])

接下来举例写的代码都是这样的:

var buf1 = Buffer.from('abcdefghijkl');
var buf2 = Buffer.from('RUNOOB');
//将 buf2 插入到 buf1 指定位置上
buf2.copy(buf1, 2);
console.log(buf1.toString());

我看语法中用到了中括号,可是实际写的时候也没有加中括号,为什么语法中会出现中括号,还是因为这是一种约定成俗的规则呢?

自己也试着尝试了一下,我看也不用加中括号

var buf1 = Buffer.from("abcdefghijklmnopqrstuvwxyz");
var buf2 = Buffer.from("123456789");
buf2.copy(buf1 , 2 , 3 , 4);
console.log(buf1.toString());//ab4defghijklmnopqrstuvwxyz

谢谢大家的解答!^ ^

 标签:node.jsjavascript

讨论这个帖子(3)垃圾回帖将一律封号处理……

Lv7 码师
to***09 PHP开发工程师 6年前#1

谢邀!
带有中括号的参数,表示这些是可选参数,可以有,也可以没有!目的让你一目了然共有那些参数,其中那些参数必选,那些参数可选!

Lv5 码农
走***鹿 移动开发工程师 6年前#2

虽然不怎么会Node,但我知道大部分的文档这么写都意味着后面是可选参数。
中括号的意思就是里面的内容不是必须的

Lv1 新人
风***扬 Web前端工程师 6年前#3

这个是介绍语法时提示可选参数,就拿

buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])

它代表着有
buf.copy(targetBuffer)——完整拷贝缓冲区到目标区域,且覆盖目标区域从头开始的位置

buf.copy(targetBuffer, targetStart)——完整拷贝缓冲区到 目标缓冲区targetStart开始的位置

buf.copy(targetBuffer, targetStart, sourceStart)—— 从源缓冲区sourceStart开始的位置拷贝数据到 目标缓冲区targetStart开始的位置

buf.copy(targetBuffer, targetStart, sourceStart, sourceEnd)——从源缓冲区拷贝sourceStartsourceEnd 间的数据 到 目标缓冲区targetStart开始的位置
等4种用法,其中:
targetBuffer——目标缓冲区
targetStart ——目标缓冲区被覆盖起始位置
sourceStart ——源缓冲区拷贝起始位置
sourceEnd ——源缓冲区拷贝结束位置


你自己后来测试举例比较少,没有真正了解这些用法的目的,对于诸如压缩/解压缩,或者加密/解密等等算法或者其他一些复杂的算法实现中,就会用到后面的功效。

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取