函数有时可以返回某些东西,有时不能返回什么吗?

时间:2018-08-23 08:02:17

标签: javascript

JavaScript函数始终返回一个值,无论它是undefined还是特定值。

让我们考虑一下这个功能:

function myFt(array) {
  for (let i = 0; i < array.length; i++) {
    if (array[i] === 10) {
      return true
    }
  }
}

当作为参数传递的数组包含值true时,此函数返回10,否则返回undefined,因为到达函数末尾时未指定返回值。 / p>

从我的经验中学到,使事情变得尽可能明确是一种很好的做法。编写返回特定值或默认undefined的JavaScript函数是否可以接受?还是不管出现什么问题我都应该明确返回一个值?

4 个答案:

答案 0 :(得分:0)

可以不返回任何东西,一点也不清除,但这是可行的。

如果不返回任何内容,则默认情况下将返回undefined。您可以像这样调用函数:

if(myFt(someData)){
    // you have returned something
}else{
    // you returned nothing
}

答案 1 :(得分:0)

无论如何,是否定义显式return。它将始终返回NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.getMenu().clear(); if(role.equals("parent")){ navigationView.inflateMenu(R.menu.drawer); } else { navigationView.inflateMenu(R.menu.drawer1); }

undefined

返回的let array = [1,2,10,5]; let array1 = [1,2,7,5]; function myFt(array) { for (let i = 0; i < array.length; i++) { if (array[i] === 10) { return true } } } console.log(myFt(array)); console.log(myFt(array1));值可以通过以下方式轻松检查。

undefine

答案 2 :(得分:0)

您可以在函数的末尾使用显式的return statementfalse来防止undefined,这是在任何Javascript函数末尾返回的默认值。

您可能会考虑使用相同类型的返回值,因为如果使用它来检查数组中的值,则需要布尔值而不是truthy / falsy值无需转换即可更快地进行检查。

// returns either true or false, depending on a value of the array
function has10(array) {
    for (let i = 0; i < array.length; i++) {
        if (array[i] === 10) {
            return true;
        }
    }
    return false;
}

答案 3 :(得分:0)

您可以根据需要执行此操作,但需要在最后检查返回值,更喜欢返回一个中性值

// neutral values
let string = ""
let number = 0

如果您不检查就返回未定义,这是可以添加的内容

function noReturn() {} 

console.log(`1 + noReturn() = ${1 + noReturn()}`)
console.log(`1 + 0 = ${1 + 0}`)

console.log(`"string" + noReturn() = ${"string" + noReturn()}`)
console.log(`"string" + "" = ${"string" + ""}`)

如您所见,由于您返回的是未定义的

,因此可能会发生一些意外行为

对于布尔值,因为undefined是一个falsy值,没问题

相关问题