接收 TypeError:无法读取未定义的属性“length”——为什么?
2021-04-08
382
我试图返回一条简单的问候消息,该消息接受输入的名称,而如果字符串为空,则将返回通用的“Hello, World!”消息。它还会查找大写错误,并将编辑名称输入以确保其正确大写。这是我目前得到的结果。
function hello(name) {
if (name.length > 0 && typeof name == 'string') {
let fixed = name.charAt(0).toUpperCase() + name.slice(1).toLowerCase();
return "Hello, " + fixed + "!";
}
else {
return "Hello, World!";
}
}
它似乎不接受名称参数的长度,并且是唯一失败的测试!
3个回答
首先检查是否为字符串
function hello(name) {
if (typeof name == 'string' && name.length > 0) { // Changed
let fixed = name.charAt(0).toUpperCase() + name.slice(1).toLowerCase();
return "Hello, " + fixed + "!";
}
else {
return "Hello, World!";
}
}
iKaio0991
2021-04-08
据我所知,您的
undefined | null
案例失败了。
我们可以通过添加默认值来解决这个问题。
function hello(name = '') { //changed
if (typeof name == 'string' && name.length > 0) { //changed
let fixed = name.charAt(0).toUpperCase() + name.slice(1).toLowerCase();
return "Hello, " + fixed + "!";
}
else {
return "Hello, World!";
}
}
Bkjain655
2021-04-08
你可以使用第三方库如
lodash
来让它更容易
const { capitalize } = require('lodash');
`Hello ${capitalize('YOU')}`;
moh saifoelloh
2021-04-08