【问题标题】:Ternary Operator with two conditionals带两个条件的三元运算符
【发布时间】:2021-05-13 19:15:49
【问题描述】:

我必须学习三元运算符,但我可以问一个问题,如何在三元运算符中挂载console.log (array),因为它不会编译。

   const string3 = (value3, separator) => {
    if (typeof value3 === "string" && typeof value3! = "") {
      constant array = value3.split (separator)
      console.log (array)}
    else {console.log ("error")}
   }
  string3 ('hello how are you', '');

【问题讨论】:

  • constant array = 语法无效...
  • 三元在哪里?
  • ! = 语法无效。

标签: javascript arrays if-statement conditional-statements conditional-operator


【解决方案1】:

三元或“条件”运算符是 if-else 语句的一种简短形式,它接受一些条件并根据该条件返回一个值。

用法:

condition ? <If-expression> : <Else-expression>

例如

const a = (2+2 == 4) ? 'true' : 'false';
console.log(a);
// OR
console.log((2+2 == '4') ? 'true' : 'false');

您的代码:

你犯了一些错误

  • constant array = ...(常量不是什么,它的const
  • ...typeof value3! = "" "!="(中间有空格)什么都不是。 ==、!=、=== 等逻辑运算符必须在字符之间没有空格。

这就是代码没有被编译的原因。否则代码本身没有问题。但是,您没有在代码中的任何地方使用三元运算符 (? & :)。使用方法如下:

const string3 = (value3, separator) =>
      (typeof value3 === "string" && value3 !== "")  // condition
      ? value3.split(separator)                      // if-statment
      : "error"                                      // else-statment

console.log(string3('hello! how are you?', ''));

以上代码的作用是有一个名为 string3 的函数,它接受 2 个参数 value &amp; separator 并检查条件,然后返回 拆分数组“错误”。并且正如它以arrow function 语法编写的那样,它不必有明确的返回语句。然后在您的函数调用中,您将返回值记录到 conosle

REFERENCE

【讨论】:

    【解决方案2】:

    您不能在 表达式 上下文中声明变量,因为变量的正确初始化必须是独立语句。所以你不能做类似的事情

    console.log(condition ? const str = 'foo' // ...`
    

    您可以改为在上一行声明变量并滥用逗号运算符(不推荐;如果您不得不这样做,请改用if/else):

    const string3 = (value3, separator) => {
      let arr;
      console.log(typeof value3 === "string" && typeof value3 != "" ?
        (array = value3.split(separator), array) :
        'error'
      );
    }
    string3('hello how are you', '');

    或者,在这种情况下,由于拆分数组将直接传递给console.log,所以不要声明额外的变量:

    const string3 = (value3, separator) => {
      let arr;
      console.log(typeof value3 === "string" && typeof value3 != "" ?
        value3.split(separator) :
        'error'
      );
    }
    string3('hello how are you', '');

    【讨论】:

      猜你喜欢
      • 2019-07-21
      • 1970-01-01
      • 2020-01-18
      • 2020-02-17
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      • 2011-06-26
      • 2023-04-11
      相关资源
      最近更新 更多