我对 JavaScript 很陌生,不太了解函数工作所需的定义。
var ShowWords = ['Olá,','sabia','que', 'ta', 'tudo', 'bem?']
for(var i=0; i<ShowWords.length; i++){
console.log(ShowWords[i]);
}
我不明白为什么上面的代码有效而下面的代码不起作用,它只给了我“未定义”
function ShowWords(pal1,pal2,pal3,pal4,pal5,pal6){
for(var i=0; i<ShowWords.length; i++){
return ShowWords[i]
}
}
console.log(ShowWords['Olá,','sabia','que', 'ta', 'tudo', 'bem?']);
有人可以帮忙吗?
最佳答案
您的函数调用语法错误。它需要是function(args)
,而不是function[args]
。
这会起作用:
function ShowWords(words){
for(var i=0; i< words.length; i++){
return ShowWords[i]
}
}
console.log(ShowWords('Olá,','sabia','que', 'ta', 'tudo', 'bem?'));
但是您想要做的可能是这样:
function ShowWords(words){
for(var i=0; i< words.length; i++){
return ShowWords[i]
}
}
console.log(ShowWords(['Olá,','sabia','que', 'ta', 'tudo', 'bem?']));
但你确实想这样做:
function ShowWords(words){
words.forEach(console.log)
}
ShowWords(['Olá,','sabia','que', 'ta', 'tudo', 'bem?']);
或者这个:
function makeListFromArray(words) {
return words.join(', ')
}
const list = makeListFromArray(['Olá,','sabia','que', 'ta', 'tudo', 'bem?']);
console.log(list);
然后你想要处理没有传入任何内容或传入字符串的情况,并且不抛出错误:
function makeListFromArray(words = []) {
return Array.isArray(words) ? words.join(', ') : words;
}
const list = makeListFromArray(['Olá,','sabia','que', 'ta', 'tudo', 'bem?']);
console.log(list);
const str = 'Olá'
console.log(makeListFromArray(str)) // prints Olá
然后你就可以像这样做:
const makeListFromArray = (words = []) =>
Array.isArray(words) ? words.join(', ') : words;
const list = makeListFromArray(['Olá,','sabia','que', 'ta', 'tudo', 'bem?']);
console.log(list);
这些是实现这一目标的几种方法。不要使用循环,array methods更强大且可组合。
然后,出现了 TypeScript...
const makeListFromArray = (words: string[] = []) => words.join(', ')
const list = makeListFromArray(['Olá,','sabia','que', 'ta', 'tudo', 'bem?']);
console.log(list);
通过 (words: string[] = [])
上的单一类型注释,TypeScript 现在将拒绝构建尝试传递字符串数组(或空数组)以外的任何内容的代码) 到 makeListFromArray
。
它还知道 list 是一个字符串,因为它知道 Array.join
返回一个字符串。
由于它们都是const
,它知道列表的值和类型不能在代码中的任何地方更改,因此它知道list
在任何地方都是一个字符串。
关于javascript - 创建一个接受多个字符串参数并将它们全部打印在一起的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60353172/