这些多余的花括号的目的是什么?
所以我最近开始在一个新的就业地点,我已经跑过一个JavaScript的格式,这使我质疑其目的。 (特别是括号{})
var _occurrences = getOccurrences($('#ddlTours').val()); { var _occurrence = getObjectByValue(_occurrences, 'tourID', booking.tourID); { _occurrenceID = _occurrence.occurrenceID; } }
对我来说,它几乎看起来像一个企图的对象build设。 即
var _occurrences : // Ignoring = getOccurrences($('#ddlTours').val()); { _occurrence : // Ignoring getObjectByValue(_occurrences, 'tourID', booking.tourID); { _occurrenceID : _occurrence.occurrenceID; } }
但据我所知,它会像执行它。
var _occurrences = getOccurrences($('#ddlTours').val()); var _occurrence = getObjectByValue(_occurrences, 'tourID', booking.tourID); _occurrenceID = _occurrence.occurrenceID;
或者它是如此_occurrence得到删除,不坐在其封装,我们分配一个封装外的变种。 这实际上是一个性能改善吗? 即
Global var a = 1 { b = someFunction() // After execution because of encapsulation it poofs??? for(var c in b) { a += c.somefunction() } }
另一个select是,它只是不好的代码?
或者也许它的意思是为了帮助开发者的代码的逻辑分离?
我只是想知道是否有人可以为我阐明这一点:)
你是正确的质疑那些花括号。 他们什么都不做。 大括号内的代码与大括号不在的执行方式相同。 让他们这样做显然是一个错误。
正如你所提到的,看起来有人可能会认为花括号会引入一个块范围,可能会导致一个variables在花括号closures后超出范围。 但JavaScript没有var
variables的块范围! (它有阻止范围let
,但只有在新的JavaScript引擎支持let
。)
也许他们只是认为这将是一个很好的方式来loggingvariables的使用。 不是。
在这里添加幽默,代码似乎完全丢失了_occurrenceID
的variables – 所以它可能无意中创build了一个全局variables!
你不用花括号重写代码的方式实际上是如何执行的。 这是代码实际执行的更好的表示,代码应该如何写入。 (修复当然遗漏的变化…)
或者也许它的意思是为了帮助开发者的代码的逻辑分离?
我要在这里做两个假设:
- 开发人员不是无能
- 你在曲线之间留下了很多线条
(如果1不是真的,那么所有投注都closures)
无所作为的花括号块确实有一个目的 – 在各种文本编辑器中,它们标记可以折叠的部分,从而将其从视线中移除。 我经常这样做,如果我有50多行,我知道工作,但我必须不断滚动过去。 在内容周围放置curl(介意嵌套),单击装订线中的“折叠/折叠”图标 – >代码消失。 我特别的编辑会记住折叠的块,所以我不需要每次重新折叠。
据我所知,大括号只是对正在阅读代码的开发者的暗示。
我的猜测是大括号和嵌套只是为了说明该列表包含一个项目,其中包含一个ID。 这可能是为了帮助读者理解,如果他们编辑任何代码或移动它,那么也编辑内部代码来匹配。
这些大括号只是为了使代码更具可读性,这是一些程序员的想法。 大括号与任何其他function无关。 人们做有线的代码。 欢呼新的有点经验。 😛
用编译器查看代码。
大括号只是定义范围。 别的更多。
考虑一下,这里是一个例子。
for(var c in b) { a += c.somefunction(); }
这段代码与之类似
for(var c in b) a += c.somefunction();
即默认循环有下一个语句的范围。
同样的,
var _occurrences = getOccurrences($('#ddlTours').val()); { var _occurrence = getObjectByValue(_occurrences, 'tourID', booking.tourID); { _occurrenceID = _occurrence.occurrenceID; } }
这只是定义范围,并在该范围内添加语句。 尽pipe你在该范围内声明了variables,但是吊装概念会将所有variables冒泡到最高。
在一个范围内声明variables就像;
if(true){ var _occurrence = getObjectByValue(_occurrences, 'tourID', booking.tourID); }
。
简而言之,
var _occurrences = getOccurrences($('#ddlTours').val()); { var _occurrence = getObjectByValue(_occurrences, 'tourID', booking.tourID); { _occurrenceID = _occurrence.occurrenceID; } }
等于:
var _occurrences = getOccurrences($('#ddlTours').val()); if(true){ var _occurrence = getObjectByValue(_occurrences, 'tourID', booking.tourID); if(true){ _occurrenceID = _occurrence.occurrenceID; } }