gpt4 book ai didi

javascript - 通过作为参数传递和全局变量访问函数内部变量之间的区别?

转载 作者:行者123 更新时间:2023-12-03 20:51:26 27 4
gpt4 key购买 nike

通过 as 参数和不带参数访问函数内部的变量有什么区别?

var a = 1;
var b = 2;

function x() {
var c = a + b;
console.log(c)
}

function y(a, b) {
var c = a + b;
console.log(c)
}

最佳答案

这里的关键区别在于 y不使用提供给函数的参数以外的任何东西。只要你看到函数调用 - 比如说 y(1, 2) - 你确切地知道会发生什么。 (至少假设您相当熟悉该功能及其作用 - 但即使您不熟悉它,希望它有一个足够清晰的名称。)

x 的对比是从外部(这里是全局)变量中读取的ab .换句话说,它依赖于未明确提供给函数的输入。这使得理解对 x() 的调用变得更加困难。可以,因为它取决于 a 的值和 b - 它可能在程序中被分配相当远的距离。事实上,也许它们的值可以通过不同的方式和通过其他函数来改变——在这种情况下,不可能确切地知道 x() 是什么。直到那次电话 session 之前,都不需要仔细研究整个程序。同样,将其与 y 进行对比。我们只需要查看调用站点,无需其他任何内容。

然而,在某些实际情况下,很难避免某种“全局状态”,尽可能避免它,并尝试将函数所需的信息保留在其本地——如 y - 毫无疑问是更好的设计。它使代码更容易理解,因此不太可能出现错误。

关于javascript - 通过作为参数传递和全局变量访问函数内部变量之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52300038/

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