最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

每日十條JavaScript經(jīng)驗技巧(一)

 更新時間:2016年06月23日 08:55:49   作者:我是偶哦  
本文是每日十條JavaScript經(jīng)驗技巧系列文章的第一篇,給大家匯總介紹一些在JavaScript使用過程中的注意事項,非常的簡單,都是個人在平時項目中的一點小小的總結,希望對大家能夠有所幫助

1. 不使用script自閉合標簽

script中使用自閉合標簽,雖然他在XHTML中合法,但是不符合HTML規(guī)范,而且得不到某些瀏覽器的正確解析。我曾經(jīng)就在引入EXT時使用此方式,導致無法正確執(zhí)行腳本。

<script src="example.js"/> --> <script src="example.js"></script>

2. 將腳本放到</body>前面

如果將腳本文件放到<head>中去,則在顯示頁面前先得下載執(zhí)行腳本,增加了用戶等待的時間。樣式表放在<head>中防止內(nèi)容顯示不正常。一般方式如下:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <link rel="stylesheet" type="text/css" href="theme.css" />
</head>
<body>
 <!-- html代碼 -->
 <script src="example.js"/>
</body>
</html>

3. 在函數(shù)內(nèi)使用嚴格模式

如果在函數(shù)外部使用嚴格模式,則有可能會使第三方類庫,和同事的代碼不能正常工作,在函數(shù)內(nèi)部則只能影響自己的代碼,不至于影響到別人的代碼。

function myfunction(){
 "use strict";
 //函數(shù)代碼
}

4. 不要省略語句結尾的分號

代碼結尾處沒有分號容易引起壓縮錯誤,另外在某些情況下可以增進代碼的性能,應為解釋器不比在花時間推測在什么地方插入分號。還有一種更常見的問題就是,自動插入分號有時會出錯,所以并不建議省略分號。

5. 使用var定義變量

定義變量時使用var關鍵字,并且全部提前至函數(shù)的最開始。
這樣做的好處就會避免無意識的創(chuàng)建出全局變量,而且讓你的代碼更容易理解。

function myfunction(){
 var result = 10 + value;
 var value = 10;
 return result;
}

這個函數(shù)語法上是沒有問題的,但是不是很直觀,不符合人的邏輯,修改如下會更好:

 funciton myfunction(){
  var result;
  var value;
  result = 10 + value;
  value = 10;
  return result;
 }

給大家解釋一下,上面兩個代碼是等價的,result的值都是NAN.JavaScript會把函數(shù)內(nèi)所有的變量聲明提升到函數(shù)的最開始,代碼一在代碼執(zhí)行時會變成代碼二的樣子,當運行到result = 10 + value;時,value的值為undefined,和10相加為NAN,然后value被賦值為10。

關于全局變量帶來的問題,大家想必也比較清楚,不然也不會出現(xiàn)命名空間的概念。

6. 函數(shù)先聲明再使用

和變量聲明一樣,函數(shù)聲明也會被JavaScript引擎提前,因此在代碼中,函數(shù)的調(diào)用可以出現(xiàn)在函數(shù)的聲明之前。 還有一點值得注意,函數(shù)聲明不應該出現(xiàn)在語句塊之內(nèi),比如:

if (condition) {
 function myfunction(){
  alert("true");
 }
}else{
 function myfunction(){
  alert("false");
 }
}
myfunction();

運行代碼我們發(fā)現(xiàn)會輸出會和瀏覽器有關,在Chrome 51和Firefox 46輸出true,IE 10下輸出false。所以盡量避免在語句塊中聲明函數(shù)。

7. 慎用typeof underfined null判斷

null是一個特殊值,我們經(jīng)常和undefined混淆,下列場景應使用null:

  1. 用來初始化一個變量,這個變量可能賦值為一個對象。
  2. 用來和一個已經(jīng)初始化的變量比較。
  3. 當函數(shù)的參數(shù)期望傳入對象時,用作參數(shù)傳入。
  4. 當函數(shù)的返回值期望是對象時,用作返回值傳出。

下面一些情況不應該使用null:

  1. 不要使用null來檢查是否傳入了某個參數(shù)。
  2. 不要用null來檢查一個變量是不是初始化。

理解null最好的方式是將他當做對象的占位符。我們經(jīng)常將null和undefined搞混的原因是我們認為null和undefined都是變量未初始化,但是只有undefin代表一個變量還沒有被初始化,null代表初始化為對象??慈缦麓a:

var person;
console.log(typeof person);  //undefined
console.log(typeof foo);   //undefined
var house = null;
console.log(typeof house);  //object

所以盡量不要用typeof判斷變量是否初始化,你并不能確定是變量不存在還是變量未初始化,返回null是你也不能確定變量有沒有被正確的賦值,所以小心使用typeof。

8. 小心使用Number類型

想必大家也知道JavaScript整數(shù)支持十進制,八進制,和十六進制的字面值。八進制中如果字面值中的數(shù)值超過了范圍,那么前導零將會被忽略,后面的數(shù)值當做十進制解析。

console.log(012);    //10
console.lgo(082);    //82

如果將八進制和十六進制用于小數(shù)則會語法錯誤。還有一點,八進制字面量在嚴格模式下是無效的。 關于浮點數(shù)計算誤差的問題大家也都清楚,凡是基于IEEE754數(shù)值的浮點計算都是這樣,所以永遠不要測試某個特定的浮點數(shù)值。
在數(shù)值類型中有一個比較特殊的值,NaN(Not a Number),這個數(shù)值用于表示本來應該返回數(shù)值但是返回的不是數(shù)值類型。NaN和任何值都不相等,包括NaN本身。我們可以用isNaN()函數(shù)測試。

9. 使用邏輯運算動態(tài)賦值

大家比較喜歡的操作

var person={
  age:10
}
var condition;
var myVar = condition && person;
alert(myVar)

如果condition轉為boolean類型為false,則myVar = condition,若為true,則myVar = person。

var person={
    age:10
  }
var condition;
var myVar = condition || person;
  alert(myVar)

如果condition轉換為boolean為true,則myVar = condition,若為false,則myVar = person。

10. 不使用with語句

不使用with的一個重要原因是,在嚴格模式下語法本身就是禁用with語句的,這也表明ECMAScript委員會確信不應使用with。我們看如下例子:

var book = {
 title : "Maintainable JavaScript",
 author: "Nicholas C. Zakas"
};
var message = "The book is ";
with(book) {
 message += title;
 message += "by " + author;
}

上述代碼的問題在于我們很難分辨title和author出現(xiàn)的位置,也難分辨出message到地址一個局部變量還是book的一個屬性,而且JavaScript引擎和壓縮工具無法對這段代碼進行優(yōu)化,應為它們無法猜出代碼的正確含義。

好了,已經(jīng)十條了,我們下一個十條再見。

相關文章

  • Javascript學習筆記之數(shù)組的遍歷和 length 屬性

    Javascript學習筆記之數(shù)組的遍歷和 length 屬性

    我們一般用循環(huán)來遍歷數(shù)組,而循環(huán)一直是 JavaScript 性能問題的常見來源,有時循環(huán)用得不好會嚴重降低代碼的運行速度。數(shù)組的屬性可以分為三種:length屬性,索引屬性,其他屬性.和普通對象相比,數(shù)組對象特殊的地方就是它的length屬性和索引屬性。
    2014-11-11
  • javaScript對象和屬性的創(chuàng)建方法

    javaScript對象和屬性的創(chuàng)建方法

    javaScript對象和屬性的創(chuàng)建方法...
    2007-01-01
  • IE8 新增的Javascript 開發(fā)接口說明

    IE8 新增的Javascript 開發(fā)接口說明

    IE8 新增的Javascript 對象 (Object),需要的朋友可以參考下。
    2011-01-01
  • javascript學習筆記(五) Array 數(shù)組類型介紹

    javascript學習筆記(五) Array 數(shù)組類型介紹

    javascript學習筆記之Array 數(shù)組類型介紹,需要的朋友可以參考下
    2012-06-06
  • JWT構成及工作原理

    JWT構成及工作原理

    這篇文章介紹了JWT構成及工作原理,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-01-01
  • JavaScript基礎學習之splice()函數(shù)詳解

    JavaScript基礎學習之splice()函數(shù)詳解

    在前端JavaScript編程過程中,為了開發(fā)出更具交互性的web應用,需要對一些數(shù)組進行處理,下面這篇文章主要給大家介紹了關于JavaScript基礎學習之splice()函數(shù)的相關資料,需要的朋友可以參考下
    2022-04-04
  • Javascript基礎教程之變量

    Javascript基礎教程之變量

    大家都知道javascript是可以隱式聲名變量的。但要注意,隱式聲名變量總是被創(chuàng)建為全局變量??匆韵麓a,情愿javascript語言強制聲明變量。建議大家一定要var聲明變量。
    2015-01-01
  • ajax不執(zhí)行success回調(diào)而是執(zhí)行了error回調(diào)

    ajax不執(zhí)行success回調(diào)而是執(zhí)行了error回調(diào)

    最近在看jQuery的API文檔,在使用到jQuery的ajax時,如果指定了dataType為json,老是不執(zhí)行success回調(diào),而是執(zhí)行了error回調(diào)函數(shù),極度郁悶
    2012-12-12
  • JavaScript學習筆記整理_簡單實現(xiàn)枚舉類型,撲克牌應用

    JavaScript學習筆記整理_簡單實現(xiàn)枚舉類型,撲克牌應用

    下面小編就為大家?guī)硪黄狫avaScript學習筆記整理_簡單實現(xiàn)枚舉類型,撲克牌應用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • javascript:void(0)的作用示例介紹

    javascript:void(0)的作用示例介紹

    在做頁面時,如果想做一個鏈接點擊后不做任何事情,或者響應點擊而完成其他事情,我們可以使用javascript:void(0),下面是具體的使用方法,感興趣的朋友可以參考下
    2013-10-10

最新評論

新竹市| 苍溪县| 绥江县| 金门县| 吴旗县| 林口县| 苏尼特左旗| 紫阳县| 昌黎县| 疏勒县| 株洲市| 常熟市| 紫云| 海南省| 昭平县| 怀宁县| 历史| 马尔康县| 莱阳市| 高碑店市| 长宁县| 大港区| 聊城市| 威远县| 宁强县| 莫力| 德兴市| 阿瓦提县| 东安县| 兴国县| 女性| 深州市| 福建省| 浦城县| 济宁市| 石棉县| 昌邑市| 神池县| 馆陶县| 电白县| 高雄县|