我无法理解在函数(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);
我想这是关于节省记忆的,不是吗?
答案 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)let
和const
关键字。通常,函数应该返回值而不是引入可能产生意外行为的副作用(虽然在这个基本函数中很难看到),在这种情况下,它将操纵全局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
第二个
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