围绕这个反应库代码的"{""}括号有什么意义?

Abh*_*war 18 javascript ecmascript-6 reactjs

我正在通过反应库代码.经过一段时间后,我发现了一段特殊的代码,我无法理解它的意义.有人可以帮忙吗?

var validateFormat = function () {};

{
  validateFormat = function (format) {
    if (format === undefined) {
      throw new Error('invariant requires an error message argument');
    }
  };
}
Run Code Online (Sandbox Code Playgroud)

这里为什么反应开发者将validateFormat包装成大括号?这样做有什么意义吗?

如果我执行以下操作,它的工作原理相同 -

var validateFormat = function () {};

validateFormat = function (format) {
   if (format === undefined) {
   throw new Error('invariant requires an error message argument');
   }
};
Run Code Online (Sandbox Code Playgroud)

Pat*_*rts 27

块范围是他们的babel-preset-fbjs的结果.如果你看一下原始的源代码,你会发现这个函数是有条件地定义的,取决于它的值__DEV__,它在转换过程中被优化,因为它相当于process.env.NODE_ENV !== 'production'.

let validateFormat = () => {};

if (__DEV__) {
  validateFormat = function(format) {
    if (format === undefined) {
      throw new Error('invariant requires an error message argument');
    }
  };
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,这里的问题是代码被错误引用. (6认同)