循环变量四种常见声明的编写方法浅析
习惯1:不要直接使用
功能环(ARR){
For (I = 0; I < arr.length; i++) {
做某事
}
}
非常危险的使用习惯。一般来说,循环变量将成为窗口对象的属性,它在全局范围内使用,很可能影响程序的正常逻辑实现。
需要记住的是,在严格的模式下,未经直接赋值的未声明变量的使用将直接抛出一个异常,而且它应该更早完成!是指在ECMA-262标准附录C段:
分配给一个未声明的标识符或无法解决的引用不在全局对象创建一个属性。当一个简单的赋值发生在严格模式代码,其lefthandside不能评估一个无法解决的参考。如果是一个referenceerror抛出异常(6.2.3.2)
换句话说,如果声明的变量将被再次使用,这referenceerror异常将被抛出。
习惯2:放入for循环初始语句块并重复它
功能环(ARR){
对于(var i = 0;i < arr.length;i++){
做 / /东西
}
/ / console.log(我);
对于(var i = 0;i < arr.length;i++){
其他的事情
}
}
这种方式似乎是最安全的规范。许多学生从C和java前端开发更喜欢这种写作。事实上,这可能是由于在Javascript的一个重要概念的误解--可变范围。不像C和java,Javascript没有一个真正的块级范围。也就是说,第一循环结束后,console.log(我)不打印未定义或扔referenceerror例外,但打印出arr.length正常。
当然,这样的写作方式不是很漂亮,只是它的美观,但它已经很好地兼容,并没有违反任何规格很长一段时间。ECMA标准并不禁止重复声明在一定范围内相同的变量。
习惯3:定义与函数顶部的其他变量的集中化
功能环(ARR){
变量var1;
VaR VAR2;
var i;
为(i = 0;i < arr.length;i++){
做某事
}
}
C89像Javascript几乎无可挑剔的定义类型的变量,不会造成Javascript支持块级范围的误解,而不是污染全球范围,也没有违反任何的标准和规范,主要缺点是循环变量声明和循环体可能相距比较远,没有更多的代码的帮助下,我们似乎无法找到一个更好的解决方案,除了等待大让浏览器实现ECMAscript 6关键词。
习惯4:封装循环代码到生活
功能环(ARR){
(函数(){())
对于(var i = 0;i < arr.length;i++){
做某事
}
});
}
过去的习惯是熟悉的生活(立即调用函数表达式)的前端程序员,即执行功能立即。这种方法的主要缺点是写作比较麻烦,性能损失过多(很小),但它具有良好的兼容性和各种符合标准。如果没有麻烦,开发商可以采取这样的方式。
以上是对Javascript中四个常见循环变量的书写习惯的简要介绍和分析。每个人都有自己的优点和缺点,读者可以根据自己的需要选择自己的需要。