【问题标题】:Javascript function for boolean returns用于布尔返回的 Javascript 函数
【发布时间】:2012-04-23 18:47:19
【问题描述】:

我在 Codecademy 的 Javascript 教程的第 4.1 节获得正确的布尔返回时遇到了一些问题。代码如下:

// Define quarter here.
var quarter = function(n) {
    if (n / 4 ){
        return true;
    } else {
        return false;
    }
};

if (quarter(4) === 1) {
  console.log("The statement is true.");
} else {
  console.log("The statement is false.");
}

据我所见,我将新定义的四分之一变量传递给一个参数为“n”的函数,然后我将其除以 4 以查看它是否返回 1 表示真,或 0(否则)表示假。然后,我在 if 循环中使用“四分之一”函数来检查作为“n”传递的数字“4”的 1 是否相等。

我假设这是一些我不习惯使用的基本逻辑(作为一个希望进入 JavaScript 编程的前端开发人员),但我肯定会很感激一些想法和指导。

【问题讨论】:

    标签: javascript boolean equality


    【解决方案1】:

    在 JavaScript 中,常量 truefalse不是数字;它们是单独的类型。

    此外,您正在与=== 进行比较,这将在比较期间显式阻止类型转换。

    请注意,对于除 0 之外的所有“n”值,n / 4 将是 true(非零)(编辑您可能打算使用 %)。一般来说,任何形式的构造:

    if (expression) {
      return true;
    }
    else {
      return false;
    }
    

    可以替换为:

    return !!(expression);
    

    或者,或者,

    return Boolean(expression);
    

    【讨论】:

    • 返回!!(表达式);是布尔转换的非常可怕的快捷方式,但仍然 - 不错的答案
    • 这并不是真的“可怕”;这只是惯用语。但是 chacun son goût :-)
    【解决方案2】:

    将您的 if 语句更改为一致,因为 1 != true。三等号不允许这样做。

    if (quarter(4) == true) {
    

    你的函数也不正确,我想你想要更像这样的东西,如果它可以被 4 整除,则返回:

    var quarter = function(n) {
      if (n % 4 == 0){
        return true;
      } else {
        return false;
      }
    };
    

    这可以缩短为:

    var quarter = function(n) {
       return n % 4 == 0;
    }
    

    【讨论】:

    • 呃……真的吗?就问题而言,此代码是等效的。
    • 是的,此代码是等效的 - % 符号将返回 0 或非 0。所有正整数将被解释为 TRUE,0 为 false。所以是等价的
    • 哦,太好了。这种速记肯定更有意义。谢谢!
    【解决方案3】:

    使用=== 表示您要求“严格相等”——不是真或假。这意味着您不能检查数字,因为数字不是严格意义上的true。见this SO question for more details

    调用代码要么检查=== true,要么跳过显式值比较,直接为if (quarter(4)) { ...

    【讨论】:

      【解决方案4】:

      在这里找不到有效的答案,所以我想我只是错过了它。我还发现谷歌搜索解决方案让我的情况变得更糟。

      我倾向于发现我在 Javascript 中过度思考解决方案,这显然导致无法解决解决方案。

      您也不一定需要return true,但我还是添加了它。

      请记住,逻辑有序的简单性是关键。

      var 季度 = 函数(数字){ 变数 = n / 4; 变量 n = 48; 如果(季度(数字)% 3 === 0){ console.log("陈述属实"); 返回真; } 别的 { console.log("陈述不实"); } }

      我希望这对你有用。

      我将利用我缺乏的 JavaScript 技能和知识向像我这样的初学者和你解释这一点。任何对 JavaScript 有深入了解的人都可能不同意,但这也是为什么大多数编程雇主会选择通信专业而不是程序员的原因:

      1. 定义一个名为 Quarter 的函数,这意味着您正在定义一个函数-- Quarter -- 但您必须先定义哪个 Quarter-- var
        @987654322 @
      2. 该函数返回一个等于
        n / 4
        的值该函数被定义为
        quarter(number)
        该值为number。 然后你引入一个新的 var,用
        number = n / 4
        定义值
      3. 要返回 true 并开始你的 if 语句,

        function(number or n)
        现在是 quarter,即您定义的函数。
      4. 提供正确方程的基础在于它以

        的形式返回真
        console.log("The statement is true!")
        你可以通过定义 n 来定义一个将被整除的数字 4,然后这个数字可以被除以3 没有余数。因为 number
        已被定义为
        n / 4
        ,在本例中,n 被定义为 48,同时:
        quarter(number)
        和 quarter(n) 适用于 if / else 语句。
        要在除以 3 后得到余数 0,请使用
        % 3 === 0 
        1. 所以
          if (quarter(number) % === 3 {
          现在是定义的函数 quarter.
          number
          是一个参数,并且您使用变量分配参数的值,
          var number = n / 4
          var n = 48
          .

      在那个注释上,当我输入这个时,理论上这也可以工作并且更短:

      var 季度 = 函数(数字){ 如果(季度(48)%3 === 0){ console.log("此说法属实!"); 返回数字 = 数字 / 4; } 别的 { console.log("这句话是假的。"); }; };

      【讨论】:

        【解决方案5】:

        好吧,这个愚蠢的东西太挑剔了。我马上揭开它的神秘面纱。 您的代码应如下所示:

        var quarter = function (number) {
        return number/4;
        }
        if (quarter(48) % 3 === 0 ) {
        console.log("The statement is hella true");
        } else {
        console.log("The statement is hella false brah");
        }
        

        你没有通过模块的原因是因为四分之一(n)括号中的愚蠢数字必须返回一个真实的陈述。 选择一个数字,任何数字,然后乘以 (3),然后乘以 (4);这反过来会给你一个值,使模 % 为零并使你的 if/else 语句为真。

        我对世界的贡献, -亚伦

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-29
          • 2021-09-27
          • 2012-07-15
          • 2013-03-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多