Javascript 函数有时能返回一些东西,有时不能?
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
未定义的
还是特定的值
让我们考虑这个函数:
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
表示数字…),而不是未定义,这样我就不必在使用返回值之前检查未定义