在JavaScript中,一个应该在函数的开头声明所有变量,以减少与变量范围是函数这一事实相关的错误风险。下面的代码通过将"Hello,World“实际打印到控制台来说明这个非直观的范围:
var demo = function () {
if (false) {
var hello = "Hello, World";
}
console.log(hello);
};
类似地,在但不在VB.NET中在VB6中中,变量有一个函数/sub的范围,这也意味着它们最好在函数/子块的顶部声明。
C,C++、Java、C#、Python或PHP没有任何理由将变量声明移到方法/函数的顶部:相反,最好是在使用变量的位置附近声明变量。
是否有一些语言最好在函数类型块的顶部声明变量(而不是为了函数级作用域以外的其他原因而声明它们尽可能靠近使用它们的位置)?
换句话说,非直观的作用域是否与VB6和JavaScript使用的范围类似,是将变量声明移至函数顶部的唯一原因?
发布于 2015-10-16 01:13:11
每一种计算机语言都有其优点和缺陷。每个人都有自己的编码标准/实践,这些标准/实践常常被周围的社区接受、构建和支配。因为编程是一门精确的艺术,除非有充分的理由去做,否则你不应该做。
现在有很好的理由声明接近使用变量的变量:
但正如您所建议的,对于某些语言来说,为了清晰或范围,有更好的理由不这样做。另一个原因可能是提前保留内存或注册,这同样取决于您正在使用的语言。一种新的语言可能伴随着非C类语义,并且可能需要一种不同的方法来声明变量。
我还建议您遵循社区为您选择的语言制定的编码标准。
发布于 2015-10-16 00:44:48
这句话“有哪些语言更好.”暗示你的问题可能没有明确的(非主观的)答案。在什么方面更好?
在某些语言中,可以通过对变量声明排序以优化内存使用的方式获得好处,但是使用现代编译器,应该为您解决这一问题。
所以在我看来,这是一个风格和个人喜好的问题。
对于Macintosh,我个人的偏好是在一开始就声明变量,而不管它们将在何处使用(无论如何,方法应该是短的,所以不应该“太远”)。对我来说,这提供了一个很好的概述“什么是在发挥作用”,可以说。
但是,现在我在Java中工作,我努力将我的变量放在最小的合理范围内(可能就在循环之外)。正如您所解释的,这种方法不适用于JavaScript,因此在“人工概述”和“语言效率”之间进行了权衡。
https://softwareengineering.stackexchange.com/questions/300029
复制相似问题