如何在Google AdminDirectory的if条件判断中返回对应用户的结果
代码存在的问题
- 条件判断误用赋值运算符:所有
if判断里都用了赋值符号=,而非相等比较运算符。name = "Mark Thomas"的执行逻辑是直接把name变量强制赋值为Mark Thomas,赋值表达式的返回值为字符串本身,布尔判定永远为真,因此所有用户都会命中第一个分支,返回www.google.com。这里应该用严格相等运算符===做判断,避免隐式类型转换的隐患。 - 语法错误导致逻辑截断:第二个
else if(对应William Tell的分支)结束后多写了一个多余的闭合大括号},直接把整个条件判断块打断,后续针对John Peter的判断逻辑完全不在函数有效执行流程内。 - 变量未声明风险:
greeting变量没有提前声明,会默认挂载为全局变量,可能引发其他上下文的变量污染问题,建议在函数开头声明该变量。
修正后的代码
function getUserID() { var user = Session.getActiveUser().getEmail(); var name = AdminDirectory.Users.get(user).name.fullName; var greeting = ""; // 提前声明变量 if (name === "Mark Thomas") { greeting = "www.google.com"; } else if (name === "William Tell") { greeting = "www.msn.com"; } else if (name === "John Peter") { greeting = "www.yahoo.com"; } return greeting; }
内容的提问来源于stack exchange,提问作者user14566169
相关产品推荐
相关产品推荐

