gpt4 book ai didi

javascript - 这些多余的花括号的目的是什么?

转载 作者:IT王子 更新时间:2023-10-29 03:03:39 27 4
gpt4 key购买 nike

所以我最近开始在一个新的工作地点工作,我遇到了一种 javascript 格式,这让我质疑它的用途。 (特别是括号 {})

var _occurrences = getOccurrences($('#ddlTours').val());
{
var _occurrence = getObjectByValue(_occurrences, 'tourID', booking.tourID);
{
_occurrenceID = _occurrence.occurrenceID;
}
}

对我来说,它几乎看起来像是一个尝试的对象构建。即

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 被删除并且不会像它封装的那样闲置,我们分配一个封装之外的 var。这真的可以提高性能吗?即

Global var a = 1
{
b = someFunction() // After execution because of encapsulation it poofs???
for(var c in b)
{
a += c.somefunction()
}
}

另一种选择是它只是错误的代码?

或者它的意思是对代码进行逻辑分离以帮助开发人员?

我只是想知道是否有人可以为我阐明这一点 :)

最佳答案

你质疑那些花括号是对的。他们什么都不做。大括号内的代码的执行方式与大括号不存在时的执行方式相同。将它们放在那里显然是错误的。

正如您所提到的,看起来有人可能认为大括号会引入 block 范围,可能会导致变量在大括号闭合后超出范围。但是 JavaScript 没有 var 变量的 block 作用域! (它确实有 let 的 block 范围,但只在支持 let 的较新的 JavaScript 引擎中。)

或者他们可能只是认为这是记录变量使用位置的好方法。不是。

这里更有趣的是,代码似乎完全缺少 _occurrenceIDvar - 所以它可能无意中创建了一个全局变量!

您在没有大括号的情况下重写代码的方式确实是它实际执行的方式。它更好地表示代码实际做什么以及应该如何编写代码。 (当然是修复丢失的 var...)

关于javascript - 这些多余的花括号的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30317601/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com