js學習筆記1(從Evernote遷移)

1、  儘可能不要聲明全局變量,Javascript中,未定義實用,非var ,均視爲全局變量;
function foo() {
var a = b = 0;
// ...
} 其中 a是foo的局部變量 b則是全局變量 右到左的賦值
function sum(x, y) {
result = x + y;
return result;
} 其中result沒有定義
2、隱式全局變量和明肯定義的全局變量間有些小的差別,就是經過操做符讓變量未定義的能力delete
  • 經過var建立的全局變量(任何函數以外的程序中建立)是不能被刪除的。
  • 無var建立的隱式全局變量(無視是否在函數中建立)是能被刪除的。
var global_var = 1;
global_novar = 2; // 反面教材
(function () {
global_fromfunc = 3; // 反面教材
}());

// 試圖刪除
delete global_var; // false
delete global_novar; // true
delete global_fromfunc; // true

// 測試該刪除
typeof global_var; // "number"
typeof global_novar; // "undefined"
typeof global_fromfunc; // "undefined"
3、隨時得到全局對象 var global = (function () { return this;}())
由於其在函數中被當作函數調用了(不是經過構造),總 是指向全局對象

4、單var形式newthis
function func() {
var a = 1,
b = 2,
sum = a + b,
myobject = {
},
i,
j;
// function body...
}
5、預解析 全部的var 會提到所處做用域的最上方進行定義(未賦值 undefined);
// 反例
myname = "global"; // 全局變量
function func() {
alert(myname); // "undefined"
var myname = "local";
alert(myname); // "local"
}
func();



等同於以下代碼


myname = "global"; // global variable
function func() {
var myname; // 等同於 -> var myname = undefined;
alert(myname); // "undefined"
myname = "local";
alert(myname); // "local"}
func();


6、緩存須要循環的dom或者數組的長度
for (var i = 0, max = myarray.length; i < max; i++) {
// 使用myarray[i]作點什麼
}




 
                                                                                                                   2014年11月25日
相關文章
相關標籤/搜索