所以我想创建一个反转值boolean参数的函数。 [这里] [1]是我提出的:
我真的只是想了解我的思维缺陷是什么。我该如何修复我的方法?
答案 0 :(得分:1)
请查看您的代码:
function not(x) {
if (1 == true) {
return "true";
} else if (0 == false) {
return "false";
}
}
什么是对的:
function not(x) {
}
出了什么问题:
if (1 == true) {
// ^ ^^ ^^^^
// | | boolean
// | equal (not type safe)
// number
您比较常数值。在这种情况下,数字为1
,其布尔值为true
。比较运算符为equality ==
,如果不是同一类型 ",则" 会转换操作数。这意味着一个是正确的,下一个部分是评估的
return "true";
永远,因为没有涉及变量。其他部分永远不会到达,以及下一次从未达到的比较。
除了总是返回'true'
之外,它不是你想要的类型,因为你需要一个布尔值并返回一个字符串。
应该改变什么:
if (x == true) {
// ^
// the parameter of the function
return true;
// ^
// boolean
} else {
// ^
// no other if
return false;
// ^
// boolean
}
或logical NOT运算符!
的所有简短版本:
function not(x) {
return !x;
}
答案 1 :(得分:0)
我假设你想编写用于学习目的的函数,因为你不需要在实践中编写它。 Javascript已经有了! (不)运营商。 对于您的功能和实现将是:
function not(x) {
if(x === true) return false;
else return true;
}
但正如我所说,你可以使用!操作