Javascript 为什么JS数组不包含peek()函数?

Javascript 为什么JS数组不包含peek()函数?,javascript,Javascript,JavaScript数组包含的函数使其处理起来像一个开箱即用的堆栈。请参阅push(…)和pop()。如果语言的规范/开发人员不辞辛劳地使用push/pop函数使数组以这种方式堆叠,为什么省略了peek()(迫使我们总是需要索引数组的最后一个元素,例如arr[arr.length-1]) 我意识到这可能是一个主观问题,但我希望有人知道关于我的Google Fu太弱而无法挖掘的语言规范的决策/发布情况。虽然名称暗示堆栈,但这并不是数组的常见用法push()在按顺序构造数组时一直使用,与堆栈无关。我

JavaScript数组包含的函数使其处理起来像一个开箱即用的堆栈。请参阅
push(…)
pop()
。如果语言的规范/开发人员不辞辛劳地使用push/pop函数使数组以这种方式堆叠,为什么省略了
peek()
(迫使我们总是需要索引数组的最后一个元素,例如
arr[arr.length-1]


我意识到这可能是一个主观问题,但我希望有人知道关于我的Google Fu太弱而无法挖掘的语言规范的决策/发布情况。

虽然名称暗示堆栈,但这并不是数组的常见用法
push()
在按顺序构造数组时一直使用,与堆栈无关。我认为
pop();数组通常是按顺序处理的,而不是从末尾弹出元素

peek()
的使用会更少,我想设计师只是觉得它没有足够的用处来制作一个内置的。正如您所指出的,手工操作的代码非常简单


arr[Math.floor(Math.random()*arr.length)]
的内置替代品几乎肯定会比
peek()
有更多的用途,但我们也没有。

你必须在某个简单的地方划出界限。此外,还有几种处理偷看空数组的方法(返回null、返回undefined或抛出)

迫使我们总是需要索引数组的最后一个元素

这并不是真的,因为您可以根据需要对数组进行原型化,或者编写一个包装函数。在下面的示例中,包装函数实际上比所需的本机API少1个字符
peek(a)
vs
a.peek()

函数peek_或_null(数组){
if(array.length==0){
返回null;
}
返回数组[array.length-1];
}
函数peek(数组){
if(array.length==0){
抛出新错误(“超出范围”);
}
返回数组[array.length-1];
}
Array.prototype.peek=函数(){
如果(this.length==0){
抛出新错误(“超出范围”);
}
返回此[this.length-1];
}
常数a=[1,2,3];
console.log(a.peek());
console.log(peek(a));

console.log(peek_或_null(a))@JackBashford这不是同义反复吗?这种语言就是这样设计的,因为这正是设计人员想要的?JavaScript的核心非常精简,倾向于避免添加装饰或奢侈品,而是专注于纯粹的本质。如果你想要更好的工具,你有没有涵盖。