Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数有时能返回一些东西,有时不能?_Javascript - Fatal编程技术网

Javascript 函数有时能返回一些东西,有时不能?

Javascript 函数有时能返回一些东西,有时不能?,javascript,Javascript,JavaScript函数总是返回一个值,无论它是未定义的还是特定的值 让我们考虑这个函数: function myFt(array) { for (let i = 0; i < array.length; i++) { if (array[i] === 10) { return true } } } 函数myFt(数组){ for(设i=0;i

JavaScript函数总是返回一个值,无论它是
未定义的
还是特定的值

让我们考虑这个函数:

function myFt(array) {
  for (let i = 0; i < array.length; i++) {
    if (array[i] === 10) {
      return true
    }
  }
}
函数myFt(数组){
for(设i=0;i
当作为参数传递的数组包含值
10
时,此函数返回
true
,否则它返回
undefined
,因为到达函数末尾时未指定返回值


从我的经验中,我了解到,将事情尽可能明确化通常是一种很好的做法。可以编写返回特定值或默认值
未定义的JavaScript函数吗?或者,无论出现什么问题,我都应该显式返回一个值吗?

可以不返回任何内容,但一点也不清楚,但这是可行的

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

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

不管您是否明确定义了return。它将始终返回未定义的

let数组=[1,2,10,5];
设数组1=[1,2,7,5];
函数myFt(数组){
for(设i=0;i
您可以在函数末尾使用带有
false
的显式表达式来防止
undefined
,这是Javascript的任何函数末尾返回的默认值

您可能会考虑使用相同类型的返回值,因为如果您使用它检查数组中的值,则需要一个布尔值,而不是一个/值,这样在不进行转换的情况下检查起来更快

// 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;
}
//根据数组的值返回true或false
函数has10(数组){
for(设i=0;i
如果您愿意,您可以这样做,但您需要在最后检查返回值,更喜欢返回中性值

// neutral values
let string = ""
let number = 0
如果不检查就返回undefined,那么可以添加以下内容

函数noReturn(){}
log(`1+noReturn()=${1+noReturn()}`)
log(`1+0=${1+0}`)
log(`“string”+noReturn()=${“string”+noReturn()}`)

console.log(`“string”+“”=${“string”+“”}`)
否则它返回未定义的
…其中?^^^^^根据设计…@Jai可能是错误的,但在我看来,JavaScript在到达函数末尾时默认返回
未定义的
。@gentilpapillon她回答Jai说这种行为是经过设计的,不需要显式返回。如果返回true,如果您真的希望在末尾有一个布尔值,那么返回false而不是undefined会有所帮助。我在类型化语言方面有一些经验,个人更喜欢返回类型的中性值(
'
表示字符串,
0
表示数字…),而不是未定义,这样我就不必在使用返回值之前检查未定义