当name全部为大写时,该函数应回呼给用户。例如,当name为“JERRY”时,函数应返回字符串“HELLO,JERRY!”控制台记录错误:.toUpperCase()不是函数。
var hello = "Hello, ";
function greet(name) {
if (name == null) {
console.log(hello + "my friend")
} else if (name == name.toUpperCase()) {
console.log(hello.toUpperCase() + name.toUpperCase())
} else {
console.log(hello + name);
}
}
var names = ["jack", "john"]
greet(names);
答案 0 :(得分:5)
names
是一个数组。数组没有这样的功能。
您可能希望在数组的每个元素上调用greet
函数:
names.forEach(greet);
如果您希望greet
函数接受数组作为参数,那么您可以执行
function greet(name) {
if (Array.isArray(name)) {
name.forEach(greet);
return;
}
...
但这种多态性通常被认为是一种不好的做法。
答案 1 :(得分:1)
您可以先应用.toString()
,然后再使用.toUpperCase()
:
if (name == name.toString().toUpperCase())
答案 2 :(得分:0)
names
是数组声明,因此如果要使用for循环或使用names[1]
类型打印该数组,则不能使用该类型的函数
<script>
var hello = "Hello, ";
function greet(name) {
if (name == null) {
document.write(hello + "my friend")
} else if (name == name.toUpperCase()) {
document.write(hello.toUpperCase() + name.toUpperCase())
} else {
document.write(hello + name);
}
}
var names = ["jack", "john"]
greet(names[0]);
greet(names[1]);
</script>
答案 3 :(得分:0)
var hello = "Hello, ";
function greet(names) {
for (var i = 0; i < names.length; i++) {
var name = names[i];
if (name == null) {
console.log(hello + "my friend")
} else if (name) {
console.log('toUpperCase works: ',hello.toUpperCase() + name.toUpperCase())
} else {
console.log(hello + name);
}
}
}
var names = ["jack", "john"]
greet(names);
如果将数组传递给函数,则该数组不起作用。现在好了。