我在这个javascript布尔函数中思考的缺陷是什么?

时间:2016-04-03 07:35:12

标签: javascript logic

所以我想创建一个反转值boolean参数的函数。 [这里] [1]是我提出的:

我真的只是想了解我的思维缺陷是什么。我该如何修复我的方法?

2 个答案:

答案 0 :(得分:1)

请查看您的代码:

function not(x) {
    if (1 == true) {
        return "true";
    } else if (0 == false) {
        return "false";
    }
}
  1. 什么是对的:

    function not(x) {
    
    }
    
  2. 出了什么问题:

    if (1 == true) {
    //  ^ ^^ ^^^^
    //  | |  boolean
    //  | equal (not type safe)
    //  number 
    

    您比较常数值。在这种情况下,数字为1,其布尔值为true。比较运算符为equality ==,如果不是同一类型 ",则" 会转换操作数。这意味着一个是正确的,下一个部分是评估的

    return "true";
    

    永远,因为没有涉及变量。其他部分永远不会到达,以及下一次从未达到的比较。

    除了总是返回'true'之外,它不是你想要的类型,因为你需要一个布尔值并返回一个字符串。

  3. 应该改变什么:

    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;
}

但正如我所说,你可以使用!操作