【发布时间】:2020-05-20 18:36:34
【问题描述】:
我需要一个 if 语句,其中条件取决于 try-catch 是否成功。定义一个新函数只是为了调用它一次是浪费空间,我宁愿找出一个单行。
我不能使用if (try{return true;}catch{return false;}),因为它会导致语法错误。因此,将“return false”视为“失败的 try-catch 尝试”。
这是我可以在它仍然有效的地方尽可能短。
// [WORKING] False as expected
if ((() => {return false})()){
console.log("Condition is true");
}
else{console.log("Condition is false");}
这对我来说很有意义,但我认为这不是最“官方”的方式。这种方式是一个好的解决方案吗?有没有更好的办法?
这对我来说有意义的原因是因为我正在检查变量是否存在,是否为数字类型并且大于 0。
if ((() => {try{return price > 0}catch{return false}})())
【问题讨论】:
-
为什么?为什么不只执行函数的内容?我不明白需要在
if执行时构造函数。 -
(1) 函数是真实的。 (2) 您在第二个版本中有一个隐式全局变量。 (3) 这是一个 xy 问题。你到底想做什么?
-
if ( (function(){ return true; }()) )将起作用。实际去做是没有意义的。 -
一般来说,IIFE 是一种合理的方式来做这么短而做作的事情。在极少数情况下这会有意义——在别处创建你的函数并使其实际上可以推理代码。这仍然有 XY 问题的味道,因为它没有任何意义。
-
让你的 JS 可读,你以后会感谢自己...
标签: javascript node.js