首页 > 代码库 > 汤姆大叔的博客-编程正例

汤姆大叔的博客-编程正例

例如避免全局变量,使用单变量声明,在循环中预缓存length(长度),遵循代码阅读

 

全局变量描述:

1.a是本地变量 ,但是b确实全局变量

2.JavaScript有隐含的全局概念,意味着你不声明的任何变量都会成为一个全局对象属性(反例)

3.区别:
通过var创建的全局变量(任何函数之外的程序中创建)是不能被删除的。
无var创建的隐式全局变量(无视是否在函数中创建)是能被删除的。

var myglobal = "hello"; // 不推荐写法
console.log(myglobal); // "hello"
console.log(window.myglobal); // "hello"
console.log(window["myglobal"]); // "hello"
console.log(this.myglobal); // "hello"

console.log(this);
console.log(window);

结论:全局 = window

this 可变

单变量声明描述

您可以使用一个var语句声明多个变量,并以逗号分隔
这就是为什么当你循环获取值时,缓存数组(或集合)的长度是比较好的形式

// 次佳的循环
for (var i = 0; i < myarray.length; i++) {
   // 使用myarray[i]做点什么
}

for(var i=0;length = arr.length;i<length;i++){
    // arr[i]

}

// for-in 循环
for (var i in man) {
   if (man.hasOwnProperty(i)) { // 过滤
      console.log(i, ":", man[i]);
   }
}


for (var i in man) {
   if (Object.prototype.hasOwnProperty.call(man, i)) { // 过滤
      console.log(i, ":", man[i]);
   }
}

 

遵循代码阅读

// 宽松一致的间距
// 使代码更易读
// 使得更加“透气”
var d = 0,
    a = b + 1;
if (a && b && c) {
    d = a % c;
    a += d;
}

汤姆大叔的博客-编程正例