这里的return语句是否不必要?
var fahrenheit;
var celsius;
function cToFConvert () {
celsius = temperatureInput.value;
fahrenheit = celsius * (9/5) +32;
console.log(fahrenheit);
return fahrenheit;
}
即使我不使用return语句,我也可以获得fahrenheit
值。如果变量是在全局范围内声明的,那么这意味着使用返回是多余的吗?
答案 0 :(得分:5)
功能和pure function。
保持函数纯粹的概念是使用没有副作用的函数的想法。这意味着,该函数应该依赖于自己的参数并返回仅与参数相关的内容。
这意味着一个函数应该有一些输入和一些输出。
在这种情况下,为了转换温度,你有一个摄氏度的值,并希望得到华氏度的值。这是一个很好的例子,如何编写一个可以为任何目的重用的函数,并且可以在不做任何更改的情况下插入到库中。
它是如何运作的?
您可以根据输入考虑输入和输出。
function convertCelsiusToFarenheit(celsius) {
return celsius * 9 / 5 + 32;
}
现在您可以使用带有所需输入的函数并将输出存储到变量
var myFarenheit = convertCelsiusToFarenheit(temperatureInput.value);
或者,如果您想转换一堆值,可以将该函数用作回调
var myFarenheitData = [-10, 0, 10, 20, 30, 40].map(convertCelsiusToFarenheit);
考虑到这一点,它更容易编写多功能函数。
答案 1 :(得分:2)
不要使用全局变量。
var farenheit;
var celsius;
function cToFConvert () {
celsius = temperatureInput.value;
farenheit = celsius * (9/5) +32;
console.log(farenheit);
return farenheit;
}
您可以删除return statement
。
不,没有必要。为什么使用全局变量,您可以在任何地方访问它,并可以在任何地方更改它的价值。
对于替代方案,您可以
function cToFConvert(celsiusValue){
return celsiusValue* (9/5) +32;
}
并打电话给
var fahrenheit = cToFConvert(temperatureInput.value);
答案 2 :(得分:1)
避免使用方法之外的变量,这是我的建议。将变量传递给方法作为参数,返回结果。如果您仍想使用方法之外的变量,则返回是多余的,因为您已经在方法中修改变量。
function cToFConvert(celsius) {
return celsius * (9 / 5) + 32;
}
var celsius = 123; //temperatureInput.value;
var farenheit = cToFConvert(celsius);
console.log(farenheit);
答案 3 :(得分:0)
我认为这是还原剂,但我认为这也不是一个有效的实现。相反,你可以这样做:
var cToFConvert = function() {
var celsius = temperatureInput.value;
var farenheit = celsius * (9/5) +32;
console.log(farenheit);
return farenheit;
}
然后
var convertedValue = cToFConvert();
希望这有帮助!
答案 4 :(得分:0)
虽然这里多余,但两种方法都不同。
案例1:您不使用退货。
这里,调用方法不期望值。
EG。 var y=cToFConvert();
`y` will be `undefined`.
案例2:使用返回时。
调用方法需要返回一个值。
EG。 var y=cToFConvert();
y
的值为farenheit
。
在这两者中,我个人更喜欢Case 1,因为通过查看函数调用,您可以清楚地说出函数返回的内容。另外,如其他答案所述,除非没有出路,否则不要使用全局变量。
答案 5 :(得分:0)
var farenheit=0, celsius=13; //definded in global space
function cToFConvert () {
farenheit = celsius * (9/5) +32; //using global variables, no need to return
}
function checkFarenheit(){
alert(farenheit); //checking global variable.
}
cToFConvert();
checkFarenheit();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
注意:这不是一个好习惯,因为它更容易出错,使用promises或回调方法。