Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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 在不提供输入的情况下调用迭代器函数会产生奇怪的行为吗?_Javascript - Fatal编程技术网

Javascript 在不提供输入的情况下调用迭代器函数会产生奇怪的行为吗?

Javascript 在不提供输入的情况下调用迭代器函数会产生奇怪的行为吗?,javascript,Javascript,如果我错了,请纠正我,commonFunction需要2个参数,通过在数组中调用commonFunction。map,数组中的每个个体会自动填充第一个参数 如上所示,没有提供第二个参数,为什么它会产生[0,4,12]的结果 我理解为了获得正确的结果,我可以使用bind如下: function commonFunction(x, y) { return x * y * 2; } var ints = [1,2,3]; var result = ints.map(commonFunction)

如果我错了,请纠正我,
commonFunction
需要2个参数,通过在
数组中调用
commonFunction
。map
,数组中的每个个体会自动填充第一个参数

如上所示,没有提供第二个参数,为什么它会产生
[0,4,12]
的结果

我理解为了获得正确的结果,我可以使用
bind
如下:

function commonFunction(x, y) {
  return x * y * 2;
}

var ints = [1,2,3];
var result = ints.map(commonFunction);
//result = [0,4,12]

Map使用3个参数调用commonFunction,第二个参数是索引

var result = ints.map(commonFunction.bind(this,3));
//result = [6,12,18]

这就是为什么您会得到
[1*0*2,2*1*2,3*2*2]

关于绑定: 在
commonFunction.bind(this,3)
之后,您会得到一个总是得到x=3的函数,但这真的很奇怪,您应该执行以下操作:


map(value=>commonFunction(3,value))
map使用3个参数调用commonFunction,第二个参数是索引

var result = ints.map(commonFunction.bind(this,3));
//result = [6,12,18]

这就是为什么您会得到
[1*0*2,2*1*2,3*2*2]

关于绑定: 在
commonFunction.bind(this,3)
之后,您会得到一个总是得到x=3的函数,但这真的很奇怪,您应该执行以下操作:


map(value=>commonFunction(3,value))
调用
.map()
的第二个参数是数组索引,因此每次都会将其作为“y”值。(为了完整起见,尽管与问题没有直接关系,但第三个参数是完整数组:)

函数公共函数(x,y,z){ console.log(“X:,X);//数组值 log(“Y:,Y);//数组索引 log(“Z:,Z);//完整数组 返回x*y*2; } var ints=[1,2,3];
var result=ints.map(commonFunction)回调函数
.map()
的第二个参数是数组索引,因此每次都会将其作为“y”值。(为了完整起见,尽管与问题没有直接关系,但第三个参数是完整数组:)

函数公共函数(x,y,z){ console.log(“X:,X);//数组值 log(“Y:,Y);//数组索引 log(“Z:,Z);//完整数组 返回x*y*2; } var ints=[1,2,3];
var result=ints.map(commonFunction)第二个参数是索引。这个问题不是链接的问题的副本,这个问题是关于parseInt的,答案是基数参数,这个是关于map及其索引参数。@JotaGe:天哪,是的,它是副本。当根本原因完全相同时,您真的认为我们需要为每个可能的函数提出一个新问题吗?不,第一个参数不是由数组成员填充的。
.bind()
不是这样工作的。定义一个
z
参数不会改变上一个示例的行为。调用绑定函数会附加参数:
sth.bind(context,1,2)(3,4)
sth(1,2,3,4)
第二个参数是索引。这个问题与链接的问题不同,这个问题是关于parseInt的,答案在基数参数中,这个是关于map及其索引参数的。@JotaGe:天哪,是的,它是重复的。当根本原因完全相同时,您真的认为我们需要为每个可能的函数提出一个新问题吗?不,第一个参数不是由数组成员填充的。
.bind()
不是这样工作的。定义一个
z
参数并不会改变上一个示例的行为。调用绑定函数会附加参数:
sth.bind(context,1,2)(3,4)
sth(1,2,3,4)
嗨,丹尼尔,你能看看我更新的问题吗?嗨,@Isaac——最好不要将问题改写成一个完全不同的主题,因为这会让问答对未来的用户不太有用(因为不清楚每个答案适用于哪个版本的问题)。你可以将其作为自己的独立问题发布,除非你收到的评论足以回答你的问题,否则你能试着看看我更新的问题吗?嗨,@Isaac--最好不要把问题改写成一个完全不同的主题,因为这会让问答对未来的用户没什么用处(因为并不总是清楚每个答案适用于哪个版本的问题。)你可能想把它作为自己的独立问题发布,除非你收到的评论足以回答你的问题。你能试着看看我更新的问题吗?你应该问另一个问题,特别是要记住,这个问题已经被标记为重复的和已回答的。我已经用b更新了我的答案更好的解决问题的方法。请不要在途中更改您的问题。嗨,JotaGe,您能试着看看我更新的问题吗?您应该问另一个问题,特别要记住,这个问题已经标记为重复和已回答。我已用更好的方法更新了我的答案来解决您的问题。和p请不要在途中改变你的问题。