如何修正climb函数的if语句逻辑以满足功能测试要求?
解决climb函数的逻辑问题
咱来看看你写的climb代码为啥没正常工作——主要是两个关键逻辑没踩对题目要求:
- 你只检查了
arguments[0]是否存在,但题目要求第一个参数必须是字符串类型,如果传了数字、布尔值这类非字符串的真值,你的逻辑就跑偏了 - 你只判断了
arguments[1] == false,但题目说的是falsy值(包括undefined、null、0、空字符串、false这些),直接判断等于false会漏掉比如不传第二个参数(此时arguments[1]是undefined)的情况
给你修正后的代码,完美符合所有测试要求:
function climb(){ // 先验证第一个参数是否为字符串类型 if (typeof arguments[0] === 'string') { // 利用!运算符判断第二个参数是否为falsy值 if (!arguments[1]) { return "On belay?"; } else { return "Climbing!"; } } else { return "Let's set up the belay rope before we climb."; } }
咱们来对应测试用例核对下:
- 调用
climb():第一个参数不存在,自然不是字符串,返回兜底提示 - 调用
climb("Benny", true)或climb("any string here", true):第一个是字符串,第二个是真值,返回"Climbing!" - 调用
climb("Benny", false)或climb("any string here"):第一个是字符串,第二个是falsy(false或者undefined),返回"On belay?" - 其他情况比如
climb(123, true)、climb(null):都会返回兜底的提示字符串
内容的提问来源于stack exchange,提问作者stoney_24
相关产品推荐
相关产品推荐

