基本了解返回功能

时间:2017-06-28 06:25:24

标签: javascript function return

我无法理解在函数(JS等)中返回值的基本概念。

我为什么要使用

function add(x,y){
  result=x+y;
  return result;
}
add(5,3);

而不是

var result=0;
function add(x,y){
  result=x+y;
}
add(5,3);

我想这是关于节省记忆的,不是吗?

5 个答案:

答案 0 :(得分:0)

基本上,当您使用'return'关键字时,函数将采用您返回的值。 Insted,当您使用正常操作时,您只需执行操作,但值(x + y)将不会保存在任何位置。

希望你明白:)

答案 1 :(得分:0)

它不是关于内存,而是关于您希望代码如何工作。

一个函数主要用于简化重复任务(尽管它只能使用一次)。

让我们开始你的第一个功能:

function add(x,y){
  result=x+y;
  return result;
}
var eight = add(5,3);
var nine = add(5,4);

我们如何通过第二个功能实现这一目标?

var result=0;
function add(x,y){
  result=x+y;
}
add(5,3);
var eight = result;
add(5,4);
var nine = result;

这似乎是关于做同样事情的方式,而不仅仅是简单地返回它。虽然您可以将其分配给全局变量,但对于返回1个事物的简单函数,您应该只使用return。只有当外部变量影响其他功能或应用程序的状态时,您才可能想要设置外部变量。

var locale = 'en';
var currency = '$';

function setConfig(locale, currency) {
    //Here we could use the currency string in other functions, so setting state would be nice here.
    locale = 'en';
    currency = '$';
}

function displayCurrency(num) {
    console.log(currency + num);
}

答案 2 :(得分:0)

在决定是否应该使用这两个功能中的一个时,我不认为记忆是一个问题。

这两个功能之间的主要内容是,作为开发人员,拥有或使用全局变量并不是一个好习惯,在这种情况下,var result = 0;这也是一个很好的做法。利用范围内的变量,Javascript在词汇范围内没有引入ES6(ECMAScript2015)letconst关键字。通常,函数应该返回值而不是引入可能产生意外行为的副作用(虽然在这个基本函数中很难看到),在这种情况下,它将操纵全局var result = 0 < / p>

如果有任何不清楚的地方,请随意开始讨论评论:)

答案 3 :(得分:0)

因为第一个是可重复使用一个。它对连接其他功能很有用

function add(x,y){
  result=x+y;
  return result;
}
console.log(add(5,3));
console.log(add(5,3)+add(8,3));// easy to connect other model

第二个

  1. 您将结果分配给变量。我不能重复使用。
  2. 如果在函数调用后在变量中赋值,结果将受到影响
    var result=0;
    function add(x,y){
      result=x+y;
    }
    add(5,3);
    result="affected";
    console.log(result)

答案 4 :(得分:0)

首先,Javascript中的函数和变量链接到作用域。在第二个示例中,变量result链接到文档范围。这是作品,但请考虑以下代码:

function add(x,y){
  result = x+y;
}
function alertAdd(x,y){
  var result = add(x,y);
  alert(result);
}
alertAdd(5,3);

如果您运行此操作,则会收到一个值为“未定义”的警报。因为变量result是在alertAdd的范围内定义的。这意味着主要范围并不知道它,result函数中的add()甚至没有定义。在其他语言中,这会产生错误。

现在考虑一下:

function add(x,y){
  return x+y;
}
function alertAdd(x,y){
  var result = add(x,y);
  alert(result);
}
alertAdd(5,3);

这是因为如果add()result未在同一范围内声明,则我们要求add()返回其值,而不是将其分配给预先存在的变量。此外,您可以在任何变量上重用add()。不仅result

var result_b = add(1+2); // result_b = 3
var result_c = add(2+2); // result_c = 4
function logAdd(a,b) {
  var value = add(a,b);
  console.log(value);
}
logAdd(3,3); // 6