javascript - 为什么不能“OR Throw”排队?
问题描述
这似乎很愚蠢,但我不明白为什么这在语法上是不正确的
const foo = a || throw "cannot be undefined"
当这很好时
const b = () => throw 'cannot be undefined'
const foo a || b()
解决方案
throw
是一个声明。
b()
是一个表达式。
a || b
接受两个表达式,并产生一个表达式。
每个表达式都可以是一个语句。反过来不成立。
请注意,这也不符合语法(与您声称的相反):
const b = () => throw new 'cannot be undefined'
但这是:
const b = () => { throw new 'cannot be undefined' }
因为箭头函数有两种形式:
params => expression
或者params => { statement* }
推荐阅读
- go - 扩展一个结构以添加另一个结构
- rabbitmq - Spring Websocket RabbitMQ中重连后的链路复用问题
- sql - 之间运算符在sql中无法正常工作
- maven - 在 maven 构建期间使用 ktlint 格式化
- go - 使用错误变量作为包级别与全局变量
- c# - 我想设置日期,但我不能,我该怎么做?
- javascript - 在页面加载触发预取后是否附加 rel = prefetch 或 prerender 的链接?
- c++ - 我可以编写一个库,以便在加载时首先生成一个以后可以被其他函数访问的数据集吗?
- csv - 是否有雪花命令重新格式化时间戳以确保它们正确显示在 CSV 导出中
- c# - 剃刀页面:如何在呈现网页之前等待页面模型加载信息