`"" === `4` && (0, xxx.xxx)()`这种写法是什么意思?

在Gatsby中webpack build的源码中有这么一段

if ("" === `4` && (0, _enginesHelpers.shouldGenerateEngines)()) {
  Promise.all(engineBundlingPromises).then(() => {
    if (process.send) {
      process.send({
        type: `LOG_ACTION`,
        action: {
          type: `ENGINES_READY`
        }
      });
    }
  });
}

其中if里的"" === `4`不是直接就false了?
还有(0, _enginesHelpers.shouldGenerateEngines)()这块是什么意思?
thx

阅读 1.3k
1 个回答

确实是直接就 false 了。=== 优先级比 && 高。

但感觉前面应该是一个环境变量之类的,构建的时候被替换成实际值了,原始的源码里不应该就长这样。

就像你用 Webpack 时在项目里常常会写的:

if (process.env.NODE_ENV === 'development') {
  // 仅在开发时执行的代码
}

等到构建后的产物里实际会是:

if ('production' === 'development') {
  // 仅在开发时执行的代码
}

这个 if 条件显然是不通过的,但目的就是为了让它不通过。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题