我在javascript控制台中有一些奇怪的结果.我试图寻找三元运算符的替代(更易读)版本,只是为了好玩.打字:
{ if(3===4) {5} else {6} }
Run Code Online (Sandbox Code Playgroud)
在我的控制台中评估为6,但由于某种原因,我无法将其分配给变量,因此运行:
let a = { if(3===4) {5} else {6} }
Run Code Online (Sandbox Code Playgroud)
不要让我直接将它存储到变量中.所以我的主要问题是,如果这个块返回了什么,为什么我不能分配它?
您的代码无法访问块(和其他语句)返回值的事实.控制台可以查看结果,它存在于语言规范级别,但不存在于代码中.
你的选择是条件运算符¹(当你习惯了它时它是非常易读的,但是你已经说过你正在寻找它的替代品)或两个部分中的if/ else赋值a:
let a;
if (3 === 4) {
a = 5;
} else {
a = 6;
}
Run Code Online (Sandbox Code Playgroud)
或者您可以使用内联函数(IIFE):
let a = (() => { if (3 === 4} return 5 else return 6; })();
Run Code Online (Sandbox Code Playgroud)
还有一个针对" do表达式 " 的提议,如下所示:
// Currently a proposal, not implemented in engines yet
let a = do { if (3 === 4) 5; else 6; };
Run Code Online (Sandbox Code Playgroud)
该提案处于流程的第1阶段,因此它可能会或可能不会进展,如果它进展,它可能会在此之前发生显着变化.
¹尽管你经常看到"三元运算符",但正确的名称是条件运算符.它是一个三元运算符(一个接受三个操作数的运算符),目前是JavaScript唯一的三元运算符,但有一天可能会改变.:-)
| 归档时间: |
|
| 查看次数: |
1070 次 |
| 最近记录: |