我正在尝试在nodejs中使用三元运算符进行条件检查。
在以下情况下,三元运算符工作正常,没有问题。它在控制台中打印文本
bash 4663 rachmad cwd DIR 8,5 24576 123350 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules
java 7372 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
java 7372 7373 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
java 7372 7376 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
java 7372 7377 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
java 7372 7378 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
java 7372 7379 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
java 7372 7380 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
java 7372 7381 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
java 7372 7382 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
java 7372 7383 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
java 7372 7384 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
java 7372 7385 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
java 7372 7386 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
java 7372 7387 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
java 7372 7388 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
java 7372 7389 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
java 7372 7390 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
java 7372 7400 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
java 7372 7401 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
java 7372 7408 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
java 7372 7409 rachmad 330r REG 8,5 5287 126198 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules/apollo-codegen/package.json (deleted)
lsof 9659 rachmad cwd DIR 8,5 24576 123350 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules
grep 9660 rachmad cwd DIR 8,5 24576 123350 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules
lsof 9661 rachmad cwd DIR 8,5 24576 123350 /media/rachmad/Data/PROJECT/myproject/app/build/apollo-codegen/node_modules
在以下情况下,同样的方法不起作用,并且会引发以下错误
let text =“我是真的”;
{true ? ( console.log("I am true") ) : ( console.log("I am not true") )}
SyntaxError:意外的标识符
^^^^
我无法理解为什么行为方式有所不同。
答案 0 :(得分:7)
条件(三元)运算符中?
或:
之后的内容必须是表达式,而不是语句。表达式求值。像let text = "I am true";
这样的变量赋值是一个语句,而不是一个表达式-它可以实现 (向text
变量赋“我是真的” ),而不是评估到某个值。
当圆括号期望对表达式求值时,圆括号内也不能包含分号。如果您确实想 ,则可以使用逗号运算符,尽管有点令人困惑:
let text;
(true ? (
text = "I am true",
console.log(text)
) : (
console.log("I am not true")
))
但是条件运算符仍然不适合这种情况-条件运算符求值为一个值(它本身是一个表达式)。如果您不打算使用结果值,则应改用if/else
:
let text;
if (true) {
text = "I am true";
console.log(text);
} else console.log("I am not true");
使用条件运算符的时间是当您需要使用结果值时,例如:
const condition = true;
const text = condition ? 'I am true' : 'I am not true';
console.log(text);
(在此处查看如何使用条件运算的结果-将其分配给text
变量。)
答案 1 :(得分:1)
您无法在三元运算符中进行分配。您将需要执行以下操作:
let text = myCondition
? "I am true"
: "I am not true"
答案 2 :(得分:0)
let text;
true ? (text = "I am true") : (text = "I am not true");
console.log(text);