深入理解javascript學習筆記(一) 編寫高品質代碼

來源:互聯網
上載者:User

一、變數

•全域變數
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

// 測試該刪除
typeof global_var; // "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 < max; 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的字串會被當做8進位處理
year = parseInt(year, 10);

六 編程規範

建構函式命名:MyConstructor();

一般函數命名:myFunction();

變數命名:firstName;

私人屬性或方法:_secondeName,

常量:PI,MAX;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.