首頁 >web前端 >js教程 >深入理解javascript學習筆記(一) 寫出高品質程式碼_javascript技巧

深入理解javascript學習筆記(一) 寫出高品質程式碼_javascript技巧

WBOY
WBOY原創
2016-05-16 17:51:05990瀏覽

一、變數

•全域變數
JavaScript的兩個特徵,不自覺地創造出全域變數是出乎意料的容易。首先,你可以甚至不需要宣告就可以使用變數;第二,JavaScript有隱含的全域概念,代表你不宣告的任何變數都會成為一個全域物件屬性(不是真正意義上的全域變量,可以用delete刪除)

複製程式碼 程式碼如下:

function sum(x,y) {
// result 未聲明,為隱式全域變數
result = x y;
return result;
}

function foo() {
// 使用任務鏈進行部分var聲明,b為隱式全域變數
var a = b = 1;
}

建議:
複製代碼 代碼如下:

function (x,y) {
var a ,b ;
a = b = 1;//a, b 為局部變數
}

•var作用
透過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

// 測試該刪除
type //; "number"
typeof global_novar; // "undefined"
typeof global_fromfunc; // "undefined"

•單var形式宣告變數
在函數頂端使用單var語句是比較有用的一種形式。所有未初始化但聲明的變量的初始值是undefined


複製代碼 代碼如下:
function func() {
var a = 1,
b = 2,
sum = a b,
myobject = {},
i,
j;
// function body...
}

•var散佈問題

複製代碼 程式碼如下:
// 反例
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();

二for迴圈

•建議使用

複製程式碼 程式碼如下:
function looper() {
var i = 0,
max,
myarray = [];

// ...
for (i = 0, max = myarray.length; i // 用myarray[i]做點什麼
}
}

使用下列運算式取代i
複製程式碼 程式碼如下:


程式碼如下:



i = i 1
i = 1以下兩種循環方式更快


//第一種變化的形式:

var i, myarray = [];
for (i = myarray.length; i–-;) {
// 用myarray[i]做點什麼
}

//第二種使用while循環:

var myarray = [],
i = myarray.length; while (i–-) { // 用myarray[i]做點什麼}
•for-in迴圈
應用在非陣列物件的遍歷上,陣列使用正常的for循環,物件使用for-in循環。使用hasOwnProperty()方法,當遍歷物件屬性的時候可以過濾掉從原型鏈上下來的屬性。

三 避免隱式型別轉換

•堅持使用===和! ==

四 避免使用eval,並且避免給setInterval(), setTimeout()和Function()建構子傳遞字串,用函式取代。

五parseInt()數值轉換

建議給基數參數賦值,
複製代碼程式碼如下:

var month = "06",
year = "09";
month = parseInt(month, 10);//開頭為0的字串會被開頭為0的字串會被當做8進位處理
year = parseInt(year, 10);

六程式規格

建構子命名:MyConstructor();

一般函數命名:myFunction();

變數命名:firstName;

私有屬性或方法:_secondeName,

常數:PI,MAX;
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn