3

我在 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 编程的前端开发人员),但我肯定会感谢一些想法和指导。

4

5 回答 5

16

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

此外,您正在比较===并且将在比较期间显式阻止类型转换。

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

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

可以替换为:

return !!(expression);

或者,或者,

return Boolean(expression);
于 2012-04-23T18:50:56.917 回答
3

将您的 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;
}
于 2012-04-23T18:51:18.010 回答
3

使用===意味着你要求一个“严格的平等”——不是真实的或虚假的。这意味着您不能检查数字,因为数字不是严格的true。有关更多详细信息,请参阅此 SO 问题

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

于 2012-04-23T18:51:29.313 回答
1

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

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

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

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

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

我希望这对你有用。

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

  1. 定义一个名为 Quarter 的函数,这意味着您正在定义一个函数—— Quarter——但你必须首先定义一个Quarter —— var
    var quarter = function(number) 
  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!")
    您可以通过使用将被除以4的数字定义n来执行此操作,然后该数字能够除以 3 而没有余。因为数字已被定义为
    n / 4
    ,在本例中n被定义为48,两者:
    季度(数)
    季度(n)
    将适用于if / else语句。
    要在除以 3 后得到余数 0,请使用
    % 3 === 0
    .

    1. 所以
      如果(季度(数字)% === 3 {
      现在是定义的函数季度。
      数字
      是一个参数,你用变量分配参数的值,
      变量编号 = n / 4
      变量 n = 48
      .

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

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

于 2015-10-10T21:20:48.213 回答
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

于 2016-08-25T22:17:25.223 回答