繁体   English   中英

我不懂javascript中的函数返回

[英]I don't understand function return in javascript

任何人都可以解释为什么在函数中使用javascript return语句? 何时以及为什么要使用它?

请帮我。

为什么在函数中使用它?

1.返回函数的结果

返回执行的操作 - 它将一些值返回函数调用者

function sum(num1, num2) {
  var result = number1 + number2

  return result
}

var result = sum(5, 6) // result now holds value '11'

2.停止执行该功能

使用return另一个原因是因为它也会中断函数的执行 - 这意味着如果你点击return ,函数就会停止运行它后面的任何代码。

function sum(num1, num2) {
  // if any of the 2 required arguments is missing, stop
  if (!num1 || !num1) {
    return
  }

  // and do not continue the following

  return number1 + number2
}

var result = sum(5) // sum() returned false because not all arguments were provided

我们为什么要使用它?

因为它允许您重用代码。

例如,如果您正在编写一个执行几何计算的应用程序,那么您可能需要计算2点之间距离 ; 这是一个常见的计算方法。

  • 你每次需要时都会再次写出公式吗?
  • 如果你的公式错了怎么办? 您是否会访问编写公式的代码中的所有位置以进行更改?

不 - 相反,你将它包装成一个函数并让它返回结果 - 所以你编写一次公式,然后你可以在任何地方重复使用它:

function getLineDistance(x1, y1, x2, y2) {
  return Math.sqrt((Math.pow((x2 - x1), 2)) + (Math.pow(( y2 - y1), 2)))
}

var lineDistance1 = getLineDistance(5, 5, 10, 20); 
var lineDistance2 = getLineDistance(3, 5, 12, 24);

您使用return语句有两个原因:

  1. 从函数返回特定值。

  2. 在函数的最后一行代码之前完成函数的执行。

没有任何return value; 声明,该函数不返回特定值(技术上返回值undefined )。

如果函数中没有特定的return语句,函数将一直运行到函数中的最后一行代码。

例子:

function add(x, y) {
    // return a sum of the two arguments
    return x + y;
}

console.log(add(1, 3));    // 4


function findParm(str, key) {
    if (!str || !key) {
         // invalid parameters, so return null
         return null;
    }
    var pieces = str.split("&");
    for (var i = 0; i < pieces.length; i++) {
        var loc = str.indexOf(pieces[i] + "=");
        if (loc >= 0) {
            // when we've found a match, return it and finish execution of the function
            return str.slice(loc + key.length + 1);
        }
    }
    // no match found, return null
    return null;
}

var str = "user=John&login=yes"
findParam(str, "login");          // "yes"

它用于从函数返回一个值。

假设您想要一个函数来进行一些计算......例如,计算一个div框在浏览器屏幕上的左侧位置。

你调用函数并给它html选择器,然后函数'返回'左边的位置值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM