了解匿名函数的作用域和返回值

时间:2019-04-29 07:44:17

标签: javascript

我有一个接收两个整数的函数,我想用更大的一个初始化另一个变量。

这是代码部分:

function findCommonDev(num1, num2) {
  var res = ((num1, num2) => {
    if (num1 > num2) {
      return num1;
    } else {
      return num2;
    }
  });
  console.log(res);
  }
  findCommonDev(10,12)

现在,由此引起的问题与特定代码无关。

  1. console.log(res)打印'[function:res]',我希望res具有传递给该函数的较大int的值。

  2. 我正在用VSC编写,并且未将参数标记为已使用,这意味着存在num1和num2的阴影-为什么?

  3. 我该如何优雅地解决这个问题?

3 个答案:

答案 0 :(得分:3)

您需要调用该函数并将num1num2作为参数传递。

function findCommonDev(num1, num2) {
  var res = ((num1, num2) => {
    if (num1 > num2) {
      return num1;
    } else {
      return num2;
    }
  })(num1,num2);
  console.log(res);
}

findCommonDev(4,6)

还要注意,如果不传递num1num2,则该代码将无法工作,因为函数num1num2中的变量是局部变量,而不是局部变量外部函数的变量。

  

函数的预期参数就像局部变量一样。无论是否传递参数,都会创建它们。

答案 1 :(得分:1)

除了返回一个新函数(这是提供所需值的实函数)之外,您还可以取最大值。

function findCommonDev(num1, num2) {
    var res = Math.max(num1, num2);
    console.log(res);
}

findCommonDev(3, 42);

答案 2 :(得分:0)

您要给控制台提供功能参考。但是,要运行函数,然后指定参数:

function findCommonDev(num1, num2) {
    var res = ((num1, num2) => {
      if (num1 > num2) {
        return num1;
      } else {
        return num2;
      }
    });
    return res(num1, num2);
    };


    console.log(findCommonDev(1,2));