.toUpperCase() 不是一个函数
2017-02-22
42374
当 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);
3个回答
names
是一个数组。数组没有这样的函数。
您可能希望对数组的每个元素调用
greet
函数:
names.forEach(greet);
如果您希望
greet
函数接受数组作为参数,那么您可以这样做:
function greet(name) {
if (Array.isArray(name)) {
name.forEach(greet);
return;
}
...
但这种多态性通常被视为一种不好的做法。
2017-02-22
您可以先应用
.toString()
,然后使用
.toUpperCase()
:
if (name === name.toString().toUpperCase())
Oranit Dar
2019-01-30
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>
Gopinath Sooriyakumar
2019-01-30