【问题标题】: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', '');
【问题讨论】:
标签:
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 & 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', '');