关于不同内置数组方法 Javascript 的术语

Posted

技术标签:

【中文标题】关于不同内置数组方法 Javascript 的术语【英文标题】:Terminology regarding different built-in array methods Javascript 【发布时间】:2019-11-16 13:02:15 【问题描述】:

javascript 中使用可用于数组的内置方法时,某些方法将直接作用于调用数组。 例如,myArray.sort() 将按字母或数字升序对 myArray 进行排序。

myArray.sort();
// sort() acts directly on myArray, changing it in its place thereafter
// ... also myArray.reverse() amongst others.

而其他方法,例如 slice(),需要有一些东西,要么是变量,要么是其他输出,才能将其值返回给...

var need_a_new_array = myArray.slice(10, 21);
// a new placeholder is needed for the results of slice... if not using 
// the results immediately (i.e. passing to another function or 
// outputting the results)

我想知道这些方法及其差异的正确术语是什么。我在这里以数组为例,但我确信 一般的对象可能也是如此。 我很感激任何帮助。谢谢。

【问题讨论】:

这不在 SO,但回答你的问题:What is the term used to describe a function/method that modifies the object it's called on? 【参考方案1】:

正确的术语是 mutatoraccessor

mutator method变异(更改)它被调用的对象,而访问器访问(并返回)它被调用的对象的值。

您可以通过查看Array.prototype 的方法列表来查看这两种类型的示例。注意它们是分门别类的,其中两个是Mutator methods("这些方法修改数组")和Accessor methods("这些方法不修改数组,返回一些数组的表示。")

不能在immutable objects 上调用突变器。

另请参阅有关软件工程 SE 的相关问题:What is the term used to describe a function/method that modifies the object it's called on?

【讨论】:

谢谢赫罗塔!直接来自 MDN。我猜无法反驳。【参考方案2】:

您要查找的术语是 'immutable' 和 'mutable' 。 Array.prototype.sort 是一种可变方法,因为它“变异”(更改)原始数组,而 Array.prototype.slice 是不可变的,因为它使用结果创建一个新数组并保持原始数组不变。

【讨论】:

哇,感谢您提供超快速简洁的答案! 这是不正确的。 “可变”和“不可变”是指对象的术语——可以改变与不能改变的事物。 差不多。正确的术语是mutating vs non-mutating

以上是关于关于不同内置数组方法 Javascript 的术语的主要内容,如果未能解决你的问题,请参考以下文章

Web前端技术分享:Javascript中的内置对象数组讲解

javascript内置对象(数组字符串日期)

[JavaScript]_[初级]_[关于forin或for...in循环语句的用法]

[JavaScript]_[初级]_[关于forin或for...in循环语句的用法]

[JavaScript]_[初级]_[关于forin或for...in循环语句的用法]

JavaScript的内置对象及其时间对象