返回存在于全局范围内的变量的最佳实践?

时间:2016-06-16 07:31:27

标签: javascript

这里的return语句是否不必要?

var fahrenheit;
var celsius;
function cToFConvert () {
       celsius = temperatureInput.value;
       fahrenheit = celsius * (9/5) +32;
       console.log(fahrenheit);
       return fahrenheit;
}

即使我不使用return语句,我也可以获得fahrenheit值。如果变量是在全局范围内声明的,那么这意味着使用返回是多余的吗?

6 个答案:

答案 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或回调方法。