我应该完成下面显示的提供的功能'攀爬'。在函数爬升中使用内置的局部变量参数。
这就是该功能的作用:
如果参数[0]中有一个字符串但参数[1]是假的,则返回“On belay?”。
如果参数[0]中有一个字符串,并且参数[1]中为true, 返回“攀登!”
否则,返回“让我们在爬上之前设置保护绳。”
必须通过这些测试:
should be a function that does not have built-in parameters
should return "Let's set up the belay rope before we climb." if called as climb()
should return "Climbing!" if called with climb("Benny", true)
should return "Climbing!" if called with climb("any string here", true)
should return "On belay?" if called with climb("Benny", false)
should return "On belay?" if called with climb("any string here")
以下是提供的功能:
function climb(){
//CODE HERE - DO NOT TOUCH THE CODE ABOVE!
}
这就是我正在尝试的,它不起作用:
function climb(){
//CODE HERE - DO NOT TOUCH THE CODE ABOVE!
if(arguments[0]){
if(arguments[1]==false){
return "On belay?";
} else {
return "Climbing!";
}
} else {
return "Let's set up the belay rope before we climb.";
}
}
答案 0 :(得分:0)
arguments[0] == arguments[0]
始终为true
,因为您正在检查它是否与自身相等。另外要检查一个元素是否为真,你只需执行if(element)
代码应该是这样的:
if(arguments[0] != '') {
if(arguments[1]){
return "On belay?";
}
else {
return "Climbing";
}
} else {
return "Let's set up the belay rope before we climb."
}
答案 1 :(得分:0)
如果我理解正确,你的函数需要基于局部变量而不是输入参数。
话虽如此,你的比较没有多大意义。
例如。 arguments[0] == arguments[0]
应始终返回true,因为它与自身进行比较。
尝试类似
的内容//check that arg[0] has a value (assuming it is a string)
if(arguments[0]){
if(arguments[1]==false){
return "On belay?";
} else { //arguments[1] == false is implicit here
return "Climbing";
}
} else {
return "Let's set up the belay rope before we climb.";
}
另请注意!=
(不等于)和!==
之间的区别(不等于或等于不等)。
答案 2 :(得分:0)
if(arguments[0]==arguments[0])
永远是真的无论 arguments[0]
是什么。
要检查arguments[0]
是否字符串,您可以使用typeof
和length
。
if(typeof arguments[0] === "string" && arguments[0]+"".length){
//runs this, if arguments[0] is a string with data in it.
}
这将检查 字符串和是否包含任何内容。
要检查arguments[1]
是否为假,您可以使用if(!arguments[1])
,但如果arguments[1]
为undefined
或为空字符串,则仍会生效。
我建议使用更可读和更安全的方式。
if(arguments[1]===false){
//runs this, if arguments[1] is false
}