ma的函数参数是怎么被调用的呢

map是数组的方法,有一个参数,参数是一个函数,函数中有3个参数

参数1:item必须。当前元素的值

参数2:index,可选。当前元素在数组中的索引值

参数3:arr可选。当前元素属于的数组对象

那这个作为map参数的函数是怎么被调用的呢

img

嗯啦,前面的结题了,应该有友友来回复了,我就瞅瞅,不说话了

html绑定带有形参的函数,函数调用的四种方式_白药葫芦的博客-CSDN博客 在JavaScript中一共有4种调用模式:函数调用模式方法调用模式构造器调用模式间接调用模式,通过call()和apply()进行1. 函数调用模式普通函数调用模式,如:functionprintProps(o){……}printProps({x:1});在一个调用中,(1)每个参数表达式计算的结果作为实参传递给声明函数时定义的形参;(2)this被绑定到全局变量var myObject = {... https://blog.csdn.net/weixin_35643153/article/details/118350761?ops_request_misc=&request_id=&biz_id=102&utm_term=html%E5%87%BD%E6%95%B0%E5%8F%82%E6%95%B0%E6%98%AF%E6%80%8E%E4%B9%88%E8%A2%AB%E8%B0%83%E7%94%A8%E7%9A%84%E5%91%A2&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-118350761.142^v62^js_top,201^v3^control_1,213^v1^control&spm=1018.2226.3001.4449


#include <iostream>
using namespace std;
#define ma(x) x*(x-1)
int MA(int x)
{ 
    return x*(x-1);
}
int main()
{
    int a=1, b=2;
    cout<< MA(1+a+b) << endl;
    cout<< ma(1+a+b) << endl;
    return 0;
}

参考自这个结题的方式方法,链接如下:https://ask.csdn.net/questions/7654450?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166693837916782248593230%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fask.%2522%257D&request_id=166693837916782248593230&biz_id=4&utm_medium=distribute.pc_search_result.none-task-ask_topic-2~ask~first_rank_ecpm_v1~ask_rank-3-7654450-null-null.pc_ask&utm_term=ma%E7%9A%84%E5%87%BD%E6%95%B0%E5%8F%82%E6%95%B0%E6%98%AF%E6%80%8E%E4%B9%88%E8%A2%AB%E8%B0%83%E7%94%A8%E7%9A%84%E5%91%A2&spm=1018.2226.3001.4187

map除了第一个作为函数的参数外,还有第二个参数,指定第一个函数参数中的this值,可以省略,那么回调函数的 this 为全局对象

理解map函数参数如何调用的,看他的实现就可以,就是循环中调用,把运算的结果存到新数组中,最后返回新数组

Array.prototype.myMap = function(callback, context) {
  let length = this.length
  let newArry = new Array(length)
  for (let index = 0; index < length; index++) {
    if (this.hasOwnProperty(index)){
        newArry[index] = callback.call(context, this[index], index, this)
    }
  }
  return newArry
}

这不就像是调用了一个方法,然后方法内return了一个方法,然后找个方法内才最终return 我们需要的那个值:闭包

解释:
1.map()方法定义在JavaScript的Array中,它返回一个新的数组,数组中的元素为原始数组调用函数处理后的值。
请注意:
map()不会对空数组进行检测
map()不会改变原始数组
2.语法:
array.map(function(currentValue, index, arr), thisIndex)
参数说明:

function(currentValue, index, arr):必须。为一个函数,数组中的每个元素都会执行这个函数。其中函数参数:
    currentValue:必须。当前元素的的值。
    index:可选。当前元素的索引。
    arr:可选。当前元素属于的数组对象。

thisIndex:可选。对象作为该执行回调时使用,传递给函数,用作"this"的值。

3.返回由原数组中每个元素的2倍成的新数组:
item *= 2

循环中调用

map()方法定义在JavaScript的Array中,他是一个高阶函数。我们向这个函数传入我们自己定义的回调函数(callback),然后map会对数组当中每一个元素去调用回调函数。