【发布时间】:2019-05-25 07:10:30
【问题描述】:
我正在浏览 React 库代码。经过我发现一段特殊的代码,我无法理解它的意义。有人可以帮忙吗?
var validateFormat = function () {};
{
validateFormat = function (format) {
if (format === undefined) {
throw new Error('invariant requires an error message argument');
}
};
}
为什么 React 开发人员将 validateFormat 包裹在花括号中?这样做有什么意义吗?
如果我执行以下操作,效果相同 -
var validateFormat = function () {};
validateFormat = function (format) {
if (format === undefined) {
throw new Error('invariant requires an error message argument');
}
};
【问题讨论】:
-
你能引用这个来源吗?它们似乎是多余的,但我猜你为了演示而“简化了代码”,只是让它们看起来是多余的。
-
它在函数周围创建一个块。但是由于使用 vars 时没有块作用域,所以这样写没有意义。想到的可能解释是:1)转译的代码,2)没有经验的开发人员,3)曾经有一个被删除的块上的标签。
-
@Shilly
since there's no block scope in JS是错误的。从 ES6 开始,let和const是块作用域声明。 -
这个问题实际上是题外话,因为它是由错误粘贴的代码引起的。
标签: javascript reactjs ecmascript-6