【问题标题】:Function return boolean statement函数返回布尔语句
【发布时间】:2021-09-27 07:19:05
【问题描述】:

任务说明

您在本活动中的任务是创建一个函数,通过检查一个人的年龄来检查他们是否足够大,可以投票。此函数称为 isOldEnoughToVote(age),具有以下规范: 它需要一个称为年龄的参数来表示人的年龄。 它检查年龄是否大于或等于 18。 如果根据该比较返回 true 或 false。

这是我到目前为止所写的,但它说结果未定义,我想知道为什么。

let response;
var age = 18
// Add your code here
function isOldEnoughToVote(age) {
 if (age >= 18){
   result; 'true'
 }else{
   result; 'false'
 } 
   

【问题讨论】:

  • 这是return - 不是结果
  • 同时删除分号,并使用布尔值而不是字符串。
  • 将(result; 'false') 改为(return false;) 同“return true;”。

标签: javascript function variables boolean conditional-statements


【解决方案1】:

有几个错别字:; 应该是 =,并且您实际上应该返回一个布尔值,而不是字符串值:

function isOldEnoughToVote(age) {
  return age >= 18;
} 

console.log(isOldEnoughToVote(17)); // false
console.log(isOldEnoughToVote(18)); // true

或者,如果你喜欢更多Arrow functions

const isOldEnoughToVote = (age) => age >= 18;

// The first => is an arrow function's "Fat Arrow"
// The second >= is an greater-or-equal operator

console.log(isOldEnoughToVote(17)); // false
console.log(isOldEnoughToVote(18)); // true

关于您的代码,还有 response 变量,但您从未为其分配任何内容,而是尝试使用该 result; 'true' 做某事。

如果你真的需要返回两个字符串"true""false"你可以这样做:

function isOldEnoughToVote(age) {
  if (age < 18) {
    return "false";
  } else {
    return "true";
  }
} 

console.log(isOldEnoughToVote(17)); // "false"
console.log(isOldEnoughToVote(18)); // "true"

或者通过使用箭头函数和Ternary operator?:

const isOldEnoughToVote = (age) => age < 18 ? "false" : "true";

console.log(isOldEnoughToVote(17)); // "false"
console.log(isOldEnoughToVote(18)); // "true"

或者您可以使用 .toString() 将布尔值转换为字符串:

const isOldEnoughToVote = (age) => (age >= 18).toString();

console.log(isOldEnoughToVote(17)); // "false"
console.log(isOldEnoughToVote(18)); // "true"

但我仍然认为你的任务应该是返回一个布尔值,而不是一个字符串 :)

【讨论】:

  • 看到三元真值求值返回字符串 false 感觉很有趣?但在此示例中,它还显示了使用另一个比较运算符来表示年龄和 18,并很好地演示了条件。
【解决方案2】:

该错误意味着函数中的变量result没有定义。

您根本不需要这样做,直接返回布尔值。

function isOldEnoughToVote(age) {
  if (age >= 18) {
    return true;
  } else {
    return false;
  }
}

在上面,您不需要else,因为它是唯一的其他结果。所以你可以这样做:

function isOldEnoughToVote(age) {
  if (age >= 18) {
    return true;
  }
  return false;
}

或者您可以更简单地返回比较结果。

function isOldEnoughToVote(age) {
  return age >= 18;
}

【讨论】:

  • 您的第二个演示不正确。他需要添加else 否则总是返回false
  • 不,return 会导致函数退出
【解决方案3】:

您的代码示例使用result; 'true'(例如)来指示true 结果。这没有任何作用——事实上它根本不正确。

它应该使用return true:

让响应;

function isOldEnoughToVote(age) {
  if (age >= 18) {
    return true;
  } else {
    return false;
  }
}

console.log(isOldEnoughToVote(10));
console.log(isOldEnoughToVote(18));
console.log(isOldEnoughToVote(50));

但是,这可以通过返回 age &gt;= 18 的结果来进一步简化:

function isOldEnoughToVote(age) {
  return age >= 18;
}

console.log(isOldEnoughToVote(10));
console.log(isOldEnoughToVote(18));
console.log(isOldEnoughToVote(50));

【讨论】:

  • 谢谢!感谢您的帮助,返回值更有意义。
【解决方案4】:

let response;
var age = 18
// Add your code here
function isOldEnoughToVote(age) {
 if (age >= 18){
   return true;
 } else {
   return false;
 } 
}

console.log(isOldEnoughToVote(18));

console.log(isOldEnoughToVote(8));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-05
    • 2015-05-03
    • 2015-02-15
    • 2012-08-16
    • 2013-10-01
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多