JavaScript 变量是在循环外还是循环内声明?

javascriptobject oriented programmingprogramming

人们认为,在循环内或循环外声明变量可能会存在性能差异,但实际上不会有差异。因为任何编程语言都可以灵活地根据需要声明变量,这样用户就可以轻松阅读和理解。

因此,在 JavaScript 中,变量也可以根据用户的方便在函数体的任何位置在循环内或循环外声明。甚至变量声明也不是在运行时执行的命令。如果变量在循环外声明,则它具有全局作用域,因为它可以在整个函数和循环内使用。如果变量在循环内声明,则作用域仅在循环内有效,如果在循环外使用将出现错误。

示例 1

此示例显示了两种类型的变量声明 -

function myFunction1(){ var i //global scope can be used through-out the function //statements for(i=0; i<3; i++){ console.log("Hello"); } } myFunction1(); function myFunction2(){ //statements for(var i=0;i<2;i++){ // 'i' is only defined inside the loop console.log("Welcome"); } } myFunction2();

传统的编程方式是,所有变量都将在程序开始时声明,因为学习编程语言的初学者也是这样想的。这对性能或任何其他运行时问题没有影响,但是,如果任何变量未声明,则假定在程序中的任何地方声明和使用都会出错。

由于传统的变量声明方法会在读取时错过流程,相反,如果在需要的地方声明,它将很容易阅读。

示例 2

这是展示变量声明传统方式的示例 -

function myFuntion(){ var a=12 var array=[12,34,56,6] var i=0; // all variables are declared at one place //statements for(i=0;i<array.length;i++){ console.log(array[i]*a); } } myFuntion();

在上面的例子中,展示了传统方法的声明。程序中使用的所有变量都在开头声明。最好在循环中声明变量,因为其有效性只限于该块,并且代码可以独立于该部分。

因此,可以说使用这两种方法中的任何一种都没有任何区别。用户可以选择在任何地方声明变量,因为使用这两种方法中的任何一种都不会改变输出结果。但大多数专业程序员只会在需要时或在循环内声明。

但使用 let 时情况并非如此。let 具有词法作用域。因此,除非您需要在循环外使用相同的变量(或者如果每次迭代都依赖于上一次迭代中对该变量执行的操作),否则最好声明使用它的作用域。


相关文章