Javascript 接收类型错误:无法读取属性';长度';未定义的-为什么?
我试图返回一条简单的问候语,它使用输入的名称,而如果字符串为空,则会返回一个通用的“Hello,World!”消息它还会查找大写错误,并将编辑名称输入以确保其正确大写。这就是我到目前为止得到的Javascript 接收类型错误:无法读取属性';长度';未定义的-为什么?,javascript,string,string-length,Javascript,String,String Length,我试图返回一条简单的问候语,它使用输入的名称,而如果字符串为空,则会返回一个通用的“Hello,World!”消息它还会查找大写错误,并将编辑名称输入以确保其正确大写。这就是我到目前为止得到的 function hello(name) { if (name.length > 0 && typeof name == 'string') { let fixed = name.charAt(0).toUpperCase() + name.slice(1).toL
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!";
}
}
它似乎不需要name参数的长度,并且是它唯一失败的测试 首先检查是否为字符串
函数hello(名称){
如果(typeof name=='string'&&name.length>0){//已更改
设fixed=name.charAt(0.toUpperCase()+name.slice(1.toLowerCase();
返回“Hello,”+修复+“!”;
}
否则{
返回“你好,世界!”;
}
}
据我所知,您的未定义| null
案例失败。
我们可以通过添加默认值来处理这个问题
函数hello(name=''){//已更改
如果(typeof name=='string'&&name.length>0){//已更改
设fixed=name.charAt(0.toUpperCase()+name.slice(1.toLowerCase();
返回“Hello,”+修复+“!”;
}
否则{
返回“你好,世界!”;
}
}
您可以使用第三方库,如lodash
,使其更简单
const { capitalize } = require('lodash');
`Hello ${capitalize('YOU')}`;
请分享你如何使用这种方法来澄清你的问题。这是一个完美的答案,非常感谢!