宝哥软件园

Javascript中声明循环变量的四种常用编写方法分析

编辑:宝哥软件园 来源:互联网 时间:2021-09-30

Javascript中的循环变量声明应该放在哪里?

习惯1:不要声明直接使用。

函数循环(arr){ for(I=0;一、长度;I) {//做某事}}是一个非常危险的使用习惯。一般来说,循环变量将成为窗口对象上的一个属性,并被全局使用,这可能会影响程序的正常逻辑实现。需要注意的是,在严格模式下,使用不声明变量的直接赋值会直接抛出异常,所以早就该这么做了!引用ecma-262标准附录c中的一段话:“对未声明的标识符或无法解析的引用的赋值不会在全局对象中创建属性。如果一个简单的赋值发生在严格模式代码中,那么它的左边不能计算为一个无法解析的引用。如果它确实引用了错误,则会引发异常(6.2.3.2)。”换句话说,如果再次使用未声明的变量,将引发引用错误异常。

习惯2:把它放在for循环的初始语句块中,反复声明。

函数循环(arr){ for(var I=0;一、长度;i ){ //做点什么}//console . log(I);for(var I=0;一、长度;I ){ //做点别的}}这种方法似乎是最安全、最规范的,很多从C、Java转到前端开发的同学都比较喜欢这种方法。其实这可能是因为对Javascript中一个重要概念的误解,导致了——变量的范围。与c和Java不同,Javascript没有真正的块级作用域,也就是说,在第一个循环结束后,console.log(i)不会打印undefined或抛出ReferenceError异常,而是正常打印arr.length。当然,虽然这种写法除了美观意义不大,但已经兼容很久了,没有违反任何规范。——ecma标准不禁止在一定范围内重复声明同一个变量。

习惯3:与函数顶部的其他变量一起集中定义。

函数循环(arr){ var var1;var var2风险值I;for(I=0;一、长度;I) {//做点什么}}这种类似c89的变量定义方法在Javascript中几乎无懈可击,不会造成Javascript支持块级范围的误解,也不会污染整个局的范围,更不会违反任何标准和规范。主要缺点是循环变量和循环体的声明可能相距很远。没有更多代码的帮助,这个问题似乎除了等待各大浏览器厂商在ECMAScript 6中实现let关键字之外,没有更好的解决方案。

习惯4:将循环代码封装到IIFE中。

函数循环(arr){(function(){ for(var I=0;一、长度;i ) { //做某事} })));}最后一个习惯是iife(立即调用的函数表达式),这是前端程序员熟悉的,即立即执行函数。这种方法的主要缺点是写起来比较麻烦,有冗余的性能损失(非常小),但是在兼容性和符合各种标准规范方面表现很好。如果不是太麻烦,开发人员可以采取这种方法。

以上是对Javascript中常见的四种循环变量定义的编写习惯的简单介绍和分析,各有利弊,读者可以根据自己的需要使用。

更多资讯
游戏推荐
更多+