Javascript 对返回函数的基本理解

Javascript 对返回函数的基本理解,javascript,function,return,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); 我想这是为了节省内存,不是吗?基本上,当您使用“return”关键字时,函数将假定您返回的值。相反,当您使用正常操作时,您只需执行一个操作,但值(x+y)不会保存在任何位置 希望您理解

我很难理解在函数(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);

我想这是为了节省内存,不是吗?

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


希望您理解:)

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

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

让我们看一下您的第一个函数:

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);
}

我认为在决定是否使用这两个函数中的一个时,内存不是一个问题

这两个函数之间的主要区别在于,作为开发人员,拥有或使用全局变量不是一个好的做法,在本例中,全局变量是
var result=0
在一个范围内使用变量也是一个很好的实践,Javascript在词汇范围上没有引入ES6(ECMAScript2015)
let
const
关键字。通常,函数应该返回值,而不是引入可能会产生意外行为的副作用(尽管在这个基本函数中很难看到),在这种情况下,副作用将操纵全局
var result=0


如果有什么不清楚的地方,请随意开始讨论:)

因为第一个是可重用的。连接另一个功能很有用
函数添加(x,y){
结果=x+y;
返回结果;
}
控制台日志(添加(5,3));

console.log(add(5,3)+add(8,3));//易于连接其他模型首先,Javascript中的函数和变量链接到一个作用域。在第二个示例中,变量
result
链接到文档范围。这里是工作,但是考虑这个代码:

function add(x,y){
  result = x+y;
}
function alertAdd(x,y){
  var result = add(x,y);
  alert(result);
}
alertAdd(5,3);
如果运行此操作,您将收到一个值为“Undefined”的警报,因为变量
result
是在
alertAdd
的范围内定义的。这意味着主作用域不知道它,而且您的
add()
函数中的
result
一开始甚至没有定义。在其他语言中,这会产生错误

现在考虑一下:

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()
。不仅
结果

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

节省内存?不是真的,这两个函数都需要全局
结果
变量。。。标准的编写方法更像是
函数add(x,y){return x+y;}
,其用法是
var result=add(2,3)
,您的第一个示例无法正常工作。当函数返回某个内容时,像那样调用它是没有意义的。