我在这里的一个答案中读到了这个技巧,可以验证foo
属性的存在,如下所示:
const {foo = foo} = bar
它抛出Uncaught ReferenceError:当foo
为undefined
时,无法在初始化前访问"foo"。
这是JS中定义明确的行为吗?这是否适用于所有最新的JavaScript版本和环境(浏览器、节点(以及未来可能的版本和环境?
如果我不在乎有更具体的错误消息,我想看看开始使用它作为一种方便的简写验证是否有意义。谢谢
这是JS中定义良好的行为吗?
是。它依赖于const
和let
变量的时间死区。不过,如果将这些数据传输到var
,则可能无法工作。
我正在尝试将其作为一种方便的缩写验证来使用是否有意义
不,请不要。这真的是一个晦涩难懂的代码,每个linter都会在定义之前抱怨使用。即使你不关心特定的错误消息,至少要使用
const {foo = error()} = bar;
具有投掷CCD_ 7功能以使意图清楚。