Javascript 函数中未定义意外值
我的代码输出字母表中每个单词的位置Javascript 函数中未定义意外值,javascript,Javascript,我的代码输出字母表中每个单词的位置 功能字母位置(文本){ 常量字母='abcdefghijklmnopqrstuvwxyz'。拆分(“”); const arrayFromText=text.toLowerCase().split(“”); 字母表地图((字母、位置)=>{ if(从文本包括(字母)和字母表包括(字母)){ 返回位置+1; } }) } log(alphabetPosition('hello'))第一个示例 return是从传递给map return不是从alphabet
功能字母位置(文本){
常量字母='abcdefghijklmnopqrstuvwxyz'。拆分(“”);
const arrayFromText=text.toLowerCase().split(“”);
字母表地图((字母、位置)=>{
if(从文本包括(字母)和字母表包括(字母)){
返回位置+1;
}
})
}
log(alphabetPosition('hello'))代码>第一个示例
return
是从传递给map
return
不是从alphabetPosition
函数返回,因为该函数不返回任何内容,您的console语句将输出undefined
第二个例子
- 在
map
中,它只是输出到日志
- 将
控制台.log
放在映射中可以确保定义位置+1
,但请注意,它不会从该函数返回任何内容
- 由于在
alphabetPosition
末尾没有return
语句,因此函数返回一个未定义的
- 您调用了两个
log
方法,您应该看到position+1
的值加上一个undefined
,因为函数不返回任何内容,您仍然在调用log
方法
使其按预期工作的一种方法是返回映射。我添加了一个过滤器来忽略数组中所有未定义的值:
功能字母位置(文本){
常量字母='abcdefghijklmnopqrstuvwxyz'。拆分(“”);
const arrayFromText=text.toLowerCase().split(“”);
返回字母表.map((字母,位置)=>{
if(从文本包括(字母)和字母表包括(字母)){
返回位置+1;
}
}).过滤器(v=>!!v)
}
log(alphabetPosition('hello'))代码>不从函数返回