2012-04-23 50 views
1

我在Codecademy的Javascript教程第4.1节中得到了一些适当的布尔返回值的问题。下面是代码:boolean返回的Javascript函数

// 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循环中使用'quarter'函数来检查数字'4'中等号1的等号'n'。

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

回答

10

在JavaScript中,常量truefalse而不是数字;他们是一个单独的类型。

此外,您正在与===进行比较,并且在比较过程中会明确禁止类型转换。

注意n/4将是true(非零),除了0的“n”的所有值(编辑你可能是指使用%)。而在一般情况下,形式的任何建筑:

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

可以被替换为:

return !!(expression); 

,或者

return Boolean(expression); 
+1

+1指出逻辑错误。 – 2012-04-23 19:07:02

+1

return !!(expression);是非常可怕的布尔转换快捷方式,但仍然 - 很好的答案 – 2012-04-23 19:11:00

+0

嗯,它不是真的“可怕”;这只是惯用的。但* chacun儿子goût* :-) – Pointy 2012-04-23 20:30:59

2

更改您的if语句是一致的,因为1 !=真。三倍等于不允许。

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

呃...真的吗?为了这个问题的目的,这段代码是等价的。 – 2012-04-23 18:52:06

+0

是这段代码是等价的 - %符号将返回0或非0.所有正整数将被解释为TRUE,并且0为假。所以它相当于 – 2012-04-23 19:06:35

+1

哦,那很好。这个速记绝对更有意义。谢谢! – 2012-04-23 19:41:33

2

使用===意味着你要求一个“严格等于” - 不是真实或虚假。这意味着你不能检查一个号码,因为号码不是严格的true。见this SO question for more details

调用代码应该检查=== true,或者跳过显式值比较,只是if (quarter(4)) { ...

0

在这里找不到答案,所以我认为我只是错过了它。我还发现谷歌搜索解决方案让我更糟糕。

我倾向于发现我用Javascript过度了解决方案,这显然导致无法解决问题。

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

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

 

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

我希望这对你有用。

我会用我缺乏JavaScript技能和知识来向像我这样的初学者和你解释这一点。和任何人谁拥有的JavaScript的极端的知识可能会不同意,但它也是为什么大多数编程雇主将采取通信主要通过程序员ANYDAY:

  1. 定义一个函数命名的四分之一,这意味着你要定义function-- 季度 - 但您必须先定义什么季度 - var
    var quarter = function(number)
  2. 该函数返回一个值,该值等于
    n/4
    该函数被定义为
    quarter(number)
    该值为号码
    然后引入一个新的变种,它定义与
    number = n/4
  3. 值返回true,并开始你的if语句,

    function(number or n)
    现在是季度,你定义的功能。

  4. 提供正确的方程的基础依赖于它的

    console.log("The statement is true!")
    形式您可以通过再定义ň有一个数字,将其划分为此返回true,然后这个数字能够被除以3没有remainder.Since
    已被定义为
    n/4
    ,随着ñ被定义为在这个例子中,既:
    quarter(number)
    quarter(n)
    和将用于如果/其他 stateme工作NT。
    要除以3后的余数为0,请使用
    % 3 === 0

    1. 所以
      if (quarter(number) % === 3 {
      现在是定义的函数quarter。
      number
      是一个参数,您可以使用变量
      var number = n/4
      var n = 48
      分配参数的值。

关于这一点,因为我打字这一点,这将在理论上,还工作,变短:

 

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

0

好吧,这愚蠢的事情是超级挑剔。我会马上揭秘它。 您的代码应该是这样的:

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语句成真。

我对世界的贡献, -Aaron