当前位置: 首页 > 知识库问答 >
问题:

为什么在使用三元运算符时,将if条件放在第一个括号内不起作用?[副本]

赫连飞沉
2023-03-14

如果第一个括号内的条件导致错误:

function fd(t) {
  let output = '';
  if (t >= 41) {
    let mns = 45
    (mns === 1) ? (output = "true") : (output = "false");
  }
  return output;
}

console.log(fd(65));

错误消息:“ReferenceError:无法在初始化之前访问词法声明'mns'”

如果条件没有第一个括号工作正常:

function fd(t) {
  let output = '';
  if (t >= 41) {
    let mns = 45
    mns === 1 ? (output = "true") : (output = "false");
  }
  return output;
}

console.log(fd(65));

谁能给我解释一下这种行为吗?


共有2个答案

弓明亮
2023-03-14

这是因为let声明尚未结束。要结束声明,请使用 或声明为var而不是let。

function fd(t) {
  let output = '';
  if (t >= 41) {
    let mns = 45;  // note the semicolan or declare it as var
    (mns === 1) ? (output = "true") : (output = "false");
  }
  return output;
}

console.log(fd(65));

潘青青
2023-03-14
匿名用户

让mns=45结束语句后,您缺少一个分号。如果没有分号来结束语句,就像试图将(mns===1)作为参数传递给let语句一样。这就像两行合并成一行:let mns=45(mns===1)?(输出="true"):(输出="false");

第二个函数之所以有效,是因为msn===1周围没有括号,所以它不会尝试将其作为参数传递给let语句。

作为一般规则,始终记住在每个JavaScript语句后添加分号。

function fd(t) {
  let output = '';
  if (t >= 41) {
    let mns = 45;
    (mns === 1) ? (output = "true") : (output = "false");
  }
  return output;
}

console.log(fd(65));

 类似资料:
  • 问题内容: Netbeans说我的三元运算符不是语句。怎么会? 我尝试过if / then / else对应项,并且工作正常: 问题答案: 三元运算符中的语句必须是非空的。他们需要退货。

  • 问题内容: 我正在创建一个javascript正则表达式来匹配搜索引擎字符串中的查询。我在轮换方面遇到问题。我有以下正则表达式: 我希望能够匹配除’wd’之外还有字符串’word’或’qw’的字符串,但是我尝试的所有尝试都不成功。我以为我可以做以下事情: 但它似乎不起作用。 问题答案: 替换为。 表示字符集,表示逻辑分组。

  • 问题内容: 这段代码有什么问题: 问题答案: 三元运算符不能有不返回值或方法的语句。您需要具有返回值的语句。 您需要重写它。

  • 问题内容: 我在开发过程中注意到了这一点。 为什么三元运算符不能在方法参数中使用?这显然是或(其他)。 问题答案: 表达式的类型为,因为这是()和()的常见类型。 您没有任何接受的方法。因此,编译错误。

  • targetPixValList是一个包含Double对象的列表,它也包含列表中连续位置的相似值,当我尝试使用Code_1比较两个Double值时,cnt返回零。当我使用code_2时,cnt返回值。 列表的类型是 为什么“==”运算符不能与Double一起使用? 代码_1: Code_2:

  • 但是我发现我不能用围棋做同样的事情,我必须写一个if-else语句。我只是想知道为什么在围棋世界里不存在这种情况(是否有一些设计原则来解释这种情况)