JavaScript用户名存在检查函数异常:无论输入是否已注册均返回true问题求助
问题分析与解决
嘿,我看到你的问题啦!这是个新手常踩的小坑——把赋值运算符和比较运算符搞混了,导致你的函数永远返回true。
错误根源
看你代码里的这段:
if (isExisting = true) { return true; } else { return false; }
这里用的是单等号=,它的作用是给变量赋值,而不是比较是否相等。不管registeredUsers.includes(username)返回的是true还是false,执行isExisting = true后,isExisting都会被强制设置为true,所以这个条件永远成立,函数自然一直返回true。
修正后的代码
把赋值运算符=换成严格相等比较运算符===(推荐用严格相等,避免类型转换带来的意外问题),就能正常判断了:
let registeredUsers = ["Xian","Sam","Gel", "Ian"]; let checkName = function() { let username = prompt('Please enter username.'); let isExisting = registeredUsers.includes(username, 0); if (isExisting === true) { // 这里改成=== return true; } else { return false; } } checkName();
额外优化建议
其实registeredUsers.includes(username)本身就会返回布尔值(true或false),你完全可以省去多余的if-else判断,直接返回这个结果,让代码更简洁:
let registeredUsers = ["Xian","Sam","Gel", "Ian"]; let checkName = function() { let username = prompt('Please enter username.'); return registeredUsers.includes(username); } checkName();
这样功能完全一致,代码却清爽多啦~
内容的提问来源于stack exchange,提问作者Ela Lisondra
相关产品推荐
相关产品推荐

