gpt4 book ai didi

javascript - 仅在使用它的那些 block 内为用 var 语句声明的变量赋值是否有意义?

转载 作者:行者123 更新时间:2023-11-29 17:46:08 25 4
gpt4 key购买 nike

让我们考虑一下

  • 一些变量在 javascript 函数中由 var 语句声明;
  • 此变量的值在整个函数中将保持不变;
  • 此变量将仅在该函数的某些 block 内使用,但不会在大多数 block 内使用。

问题:如果上面提到的都是正确的,那么最好只给变量赋一个值(不会改变)一次,在外面的函数声明的开头 block ,还是仅在使用变量的那几个 block 内重复分配相同的值?

在以下示例中,函数声明中有 5 个 block ,但变量 x 仅在其中 2 个中使用。但是让我们假设有更多的 block ,其中只有少数涉及变量 x;

示例 1:在此示例中,变量 x 在函数声明开始时仅在所有 block 之外赋值一次:

function foo() {
var x;
x = 'value';
if (ConditionNotInvolvingX) {
// do something without using x
}
else if (Condition2NotInvolvingX) {
console.log(x);
}
else if (Condition3NotInvolvingX) {
console.log('""' + x + '""');
}
else if (Condition4NotInvolvingX) {
// do something without using x
}
else if (Condition5NotInvolvingX) {
// do something without using x
}
}

示例 2:在此示例中,变量 x 仅在需要它的那 2 个 block 内重复赋值:

function foo() {
var x;
if (ConditionNotInvolvingX) {
// do something without using x
}
else if (Condition2NotInvolvingX) {
x = 'value';
console.log(x);
}
else if (Condition3NotInvolvingX) {
x = 'value';
console.log('""' + x + '""');
}
else if (Condition4NotInvolvingX) {
// do something without using x
}
else if (Condition5NotInvolvingX) {
// do something without using x
}
}

最佳答案

当然,您可以在任何方便的地方分配它,这样所有需要访问它的函数/ block 都可以这样做。

就是说:通常使用 const 而不是 var - const 具有 block 作用域(使您的代码更易于理解),没有提升(相同),并且不允许重新分配(相同)。

不过,如果您愿意,您可以尽可能多地编写纯函数,这意味着(除其他事项外),函数引用的唯一变量直接在该函数的 block ,而不是在任何外部范围内。纯函数有时需要更多的思考才能实现,但它们可以使对较大脚本的推理变得更容易。是否要在编写代码时尝试这样做取决于您。

关于javascript - 仅在使用它的那些 block 内为用 var 语句声明的变量赋值是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49473674/

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