Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何工作“elements.map({length:lengthFooBArX})=>lengthFooBArX)_Javascript - Fatal编程技术网

Javascript 如何工作“elements.map({length:lengthFooBArX})=>lengthFooBArX)

Javascript 如何工作“elements.map({length:lengthFooBArX})=>lengthFooBArX),javascript,Javascript,我在这里阅读了有关箭头函数的内容,但不明白这两部分是如何工作的 var elements = [ 'Hydrogen', 'Helium', 'Lithium', 'Beryllium' ]; elements.map(({ length :lengthFooBArX }) => lengthFooBArX); // [8, 6, 7, 9] elements.map(({ length }) => length); // [8, 6, 7, 9] 代码正在分解

我在这里阅读了有关箭头函数的内容,但不明白这两部分是如何工作的

var elements = [
  'Hydrogen',
  'Helium',
  'Lithium',
  'Beryllium'
];

elements.map(({ length :lengthFooBArX }) => lengthFooBArX); // [8, 6, 7, 9]

elements.map(({ length }) => length); // [8, 6, 7, 9]

代码正在分解函数参数的结构

elements.map(({ length }) => length); 

elements.map(x => x.length); 
在第一个示例中,代码创建了一个名为lengthFooBArX的回调局部变量,并将该变量分配给元素的length属性

第一个代码相当于

elements.map(x => {
    let lengthFooBArX = x.length;
    return lengthFoBArX;
}
分解结构的语法是

let {length} = x;
//is same as
let length = x.length;
如果变量名和属性名不同,则

let {length:otherName} = x;
//is same as 
let otherName = x.length;

这是一个组合的箭头函数,解构字符串和重命名内部的解构

大致相当于以下内容:

elements.map( function( element ) {
  var lengthFooBArX = element.length;
  return lengthFooBArX;
});
所以{length}部分提取字符串的长度。因此,在第一次迭代中,字符串是“Hydrogen”,长度为8个字符

elements.map{length:lengthFooBArX}的:lengthFooBArX部分将我们创建的变量从“length”重命名为“lengthFooBArX”


最后,箭头隐式返回lengthFooBArX,作为映射“Hydrogen”的结果,因此结果数组中的第一个元素是8。

如果您查看此代码 elements.map{length:lengthFooBArX}=>lengthFooBArX;,您可以看到,您正在对map函数中传递的字符串应用length函数,并且输出是长度,因为这是{}中包含的内容

它也可以像elements一样以语法糖化的方式编写。mapelement=>{ 返回元素长度;
};

首先,我们创建一个字符串项数组。 在它之后,我们调用函数映射,传递给它的函数与

function({ length }){
    return length // We get as length property length of the input object
}
第二个代码段:

function({ length: lengthFooBArX }){
    return lengthFooBArX // We get as lengthFooBArX property length of the input object
}

params=>{code}是函数params{code}的模拟。有些人认为这样更好

我不知道你在问什么;长度是字符串的一个属性,您使用解构来访问传递到映射中的任何内容的属性,在本例中是字符串数组。@DaveNewton:这部分做什么?{length:lengthFooBArX}您一般理解参数的解构吗?@user145959@deceze这是。。。自我回答;OP不明白,这就是重点。你的等价物是非语法的糖版本。