日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript初学者必须注意的7个细节

發布時間:2025/3/20 javascript 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript初学者必须注意的7个细节 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

IT168?技術】每種語言都有它特別的地方,對于JavaScript來說,使用var就可以聲明任意類型的變量,這門腳本語言看起來很簡單,然而想要寫出優雅的代碼卻是需要不斷積累經驗的。本文列舉JavaScript初學者應該注意的七個細節,與大家分享。

 (1)簡化代碼

  JavaScript定義對象和數組非常簡單,我們想要創建一個對象,一般是這樣寫的:

var?car?=?new?Object();?car.colour?=?'red';?car.wheels?=?4;?car.hubcaps?=?'spinning';?car.age?=?4;

  下面的寫法可以達到同樣的效果:

var?car?=?{?colour:'red',?wheels:4,?hubcaps:'spinning',?age:4?}

  后面的寫法要短得多,而且你不需要重復寫對象名稱。

  另外對于數組同樣有簡潔的寫法,過去我們聲明數組是這樣寫的:

var?moviesThatNeedBetterWriters?=?new?Array(?'Transformers','Transformers2','Avatar','Indiana?Jones?4'?);

?  更簡潔的寫法是:

var?moviesThatNeedBetterWriters?=?[?'Transformers','Transformers2','Avatar','Indiana?Jones?4'?];

  對于數組,還有關聯數組這樣一個特別的東西。?你會發現很多代碼是這樣定義對象的:

var?car?=?new?Array();?car['colour']?=?'red';?car['wheels']?=?4;?car['hubcaps']?=?'spinning';?car['age']?=?4;

  這太瘋狂了,不要覺得困惑,關聯數組只是對象的一個別名而已。

  另外一個簡化代碼的方法是使用三元運算符,舉個例子:

var?direction;?if(x?<?200){?direction?=?1;?}?else?{?direction?=?-1;?}

?  我們可以使用如下的代碼替換這種寫法:

 var?direction?=?x?<?200???1?:?-1;

(2)使用JSON作為數據格式

  偉大的Douglas?Crockford發明了JSON數據格式來存儲數據,你可以使用原生的javascript方法來存儲復雜的數據而不需要進行任何額外的轉換,例如:

var?band?=?{?
"name":"The?Red?Hot?Chili?Peppers",?
"members":[?
{?
"name":"Anthony?Kiedis",?
"role":"lead?vocals"?
},?
{?
"name":"Michael?'Flea'?Balzary",?
"role":"bass?guitar,?trumpet,?backing?vocals"?},?
{?
"name":"ChadSmith",?
"role":"drums,percussion"?
},?{?
"name":"John?Frusciante",?
"role":"Lead?Guitar"?
}?
],?
"year":"2009"?
}

  你可以使用在JavaScript中直接使用JSON,甚至作為API返回的一種格式,這就是所謂的JSON?–?P,在許多的API中被應用,例如:

<div?id="delicious">div>

<script>?
function?delicious(o){??
var?out?=?'';??
for(var?i=0;i<o.length;i++){??
out?+=?'<li><a?href="'?+?o[i].u?+?'">'?+???o[i].d?+?'a>li>';??}??
out?+=?'ul>';??
document.getElementById('delicious').innerHTML?=?out;??}??
script>?
<script?src="http://feeds.delicious.com/v2/json/codepo8/javascript?count=15&callback=delicious">script>

?這里調用delicious?Web服務獲取最新書簽,以JSON格式返回,然后將它們顯示成無序列表的形式。

????????從本質上講,JSON是用于描述復雜的數據最輕量級的方式,而且直接它運行在瀏覽器中。?你甚至可以在PHP中調用?json_decode()函數來使用它。

?3)盡量使用JavaScript原生函數

  要找一組數字中的最大數,我們可能會寫一個循環,例如:

var?numbers?=?[3,342,23,22,124];?
var?max?=?0;?
for(var?i=0;i?max){?max?=?numbers[i];?
}?
}?
alert(max);

? ?其實,不用循環可以實現同樣的功能:

var?numbers?=?[3,342,23,22,124];?
numbers.sort(function(a,b){return?b?-?a});?

alert(numbers[0]);

??????而最簡潔的寫法是:

Math.max(12,123,3,2,433,4);?//?returns?433

 ?你甚至可以使用Math.max來檢測瀏覽器支持哪個屬性:

var?scrollTop=?Math.max(?doc.documentElement.scrollTop,?doc.body.scrollTop?);

 ??如果你想給一個元素增加class樣式,可能原始的寫法是這樣的:

function?addclass(elm,newclass){?
var?c?=?elm.className;?
elm.className?=?(c?===?'')???newclass?:?c+'?'+newclass;

 ??而更優雅的寫法是:

function?addclass(elm,newclass){?
var?classes?=?elm.className.split('?');?classes.push(newclass);?elm.className?=?classes.join('?');?
}

(4)事件委托

  事件是JavaScript非常重要的一部分。我們想給一個列表中的鏈接綁定點擊事件,一般的做法是寫一個循環,給每個鏈接對象綁定事件,HTML代碼如下:

<h2>Great?Web?resourcesh2>?
<ul?id="resources">?
<li><a?href="http://opera.com/wsc">Opera?Web?Standards?Curriculuma>li>?
<li><a?href="http://sitepoint.com">Sitepointa>li>?

<li><a?href="http://alistapart.com">A?List?Aparta>li>?
<li><a?href="http://yuiblog.com">YUI?Bloga>li>?

<li><a?href="http://blameitonthevoices.com">Blame?it?on?the?voicesa>li>?
<li><a?href="http://oddlyspecific.com">Oddly?specifica>li>?
ul>

?  腳本如下:

//?Classic?event?handling?example??
(function(){??
var?resources?=?document.getElementById('resources');??
var?links?=?resources.getElementsByTagName('a');??
var?all?=?links.length;??
for(var?i=0;i<all;i++){??
//?Attach?a?listener?to?each?link??

links[i].addEventListener('click',handler,false);??
};??
function?handler(e){??var?x?=?e.target;?
//?Get?the?link?that?was?clicked??

alert(x);??e.preventDefault();??
};??
})();

  更合理的寫法是只給列表的父對象綁定事件,這樣可行的原理在于事件是支持冒泡的,代碼如下:

(function(){??
var?resources?=?document.getElementById('resources');??
resources.addEventListener('click',handler,false);??
function?handler(e){??
var?x?=?e.target;?
//?get?the?link?tha??if(x.nodeName.toLowerCase()?===?'a'){??
alert('Event?delegation:'?+?x);??e.preventDefault();??
}??};??
})();

(5)匿名函數

  關于JavaScript的最頭疼的事情之一是,它的變量沒有特定的作用范圍。?一般情況下,任何變量,函數,數組或對象都是全局性,這意味著在同一頁上的其他腳本可以訪問并覆蓋它們。解決方法是把變量封裝在一個匿名函數中。?例如,下面的定義將產生三個全局變量和和兩個全局函數:

var?name?=?'Chris';??
var?age?=?'34';??
var?status?=?'single';??
function?createMember(){??
//?[...]??}??
function?getMemberDetails(){??
//?[...]??}

? ?封裝后如下:

var?myApplication?=?function(){??
var?name?=?'Chris';??
var?age?=?'34';??
var?status?=?'single';??
return{??
createMember:function(){??
//?[...]??
},??
getMemberDetails:function(){??
//?[...]??
}??
}??
}();??
//?myApplication.createMember()?and??
//?myApplication.getMemberDetails()?now?works.

 ???這被稱為單體模式,是JavaScript設計模式的一種,這種模式在YUI中用得非常多,改進的寫法是:

var?myApplication?=?function(){??
var?name?=?'Chris';??
var?age?=?'34';??
var?status?=?'single';??
function?createMember(){??
//?[...]??}??
function?getMemberDetails(){??
//?[...]??}??
return{??create:createMember,??get:getMemberDetails??
}??
}();??
//myApplication.get()?and?myApplication.create()?now?work

(6)代碼可配置

  你寫的代碼如果想讓別人更容易進行使用或者修改,則需要可配置,解決方案是在你寫的腳本中增加一個配置對象。要點如下:

1、在你的腳本中新增一個叫configuration的對象。
2、在配置對象中存放所有其它人可能想要去改變的東西,例如CSSIDclass名稱、語言等等。
3、返回這個對象,作為公共屬性以便其它人可以進行重寫。

?(7)代碼兼容性

  兼容性是初學者容易忽略的部分,通常學習Javascript的時候都是在某個固定的瀏覽器中進行測試,而這個瀏覽器很有可能就是IE,這是非常致命的,因為目前幾大主流瀏覽器中偏偏IE對標準的支持是最差的。最終用戶看到的結果也許就是,你寫的代碼在某個瀏覽器無法正確運行。你應該把你的代碼在主流的瀏覽器中都測試一下,這也許很費時間,但是應該這樣做。

  Javascript應該注意的七個細節你注意到了嗎??看完后是不是恍然大悟呢?

轉載于:https://www.cnblogs.com/baiduligang/p/4247500.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的javascript初学者必须注意的7个细节的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕视频在线 | 色一情一区二区三区四区 | 欧美巨大另类极品videosbest | 97xxx| 亚洲热影院| 视频在线观看91 | 中文字幕日韩人妻在线视频 | www.亚洲天堂.com | 99久久久久久 | 午夜视频福利网站 | 双性懵懂美人被强制调教 | 亚洲专区区免费 | 亚洲成人91 | 在线观看福利视频 | 亚洲美女色 | а 天堂 在线 | 日韩黄色一级片 | 国产黄色大片在线观看 | 欧美日韩视频无码一区二区三 | 国产精品麻豆欧美日韩ww | 欧美日韩国产在线一区 | 日韩一区二区av | 69成人免费视频 | 日韩av一区在线观看 | 亚洲女优在线 | 久久婷婷综合色丁香五月 | 大地资源高清播放在线观看 | 久久国产黄色片 | 亚洲人成777| 久久久久成人精品免费播放动漫 | 国产中文字幕在线免费观看 | 被室友玩屁股(h)男男 | 日韩中文一区二区三区 | 中文字幕一区二区三区精彩视频 | 全程粗话对白视频videos | 欧美成人免费 | 夜间福利在线观看 | 国产欧美高清 | 欧美视频一二三 | 欧美14sex性hd摘花 | 丝袜制服一区 | 国产女人18毛片水真多 | 国产黄色一级大片 | 午夜影院在线观看免费 | 亚洲色图10p | 欧美黄色a级大片 | 伊人网站在线观看 | av大帝在线观看 | 日韩中文字幕视频在线观看 | 午夜激情成人 | 操日本老妇| 99色国产| 亚洲制服无码 | 欧美日韩国产网站 | 伊人超碰在线 | 日韩一级 | 亚洲欧洲日产av | av男人的天堂在线 | 欧美一区二区视频在线 | 67194成人 | 国产成人久久 | wwwwxxxxx日本 | 国产精品91在线观看 | 韩国精品在线观看 | 欧美aⅴ在线 | 亚洲国产一区在线观看 | 国产主播精品在线 | 麻豆精品免费 | 黄色小说图片视频 | 久久久久久色 | 97潮色 | 小镇姑娘国语版在线观看免费 | 亚洲国产精品成人午夜在线观看 | 国产精品久久久久久久av福利 | 国产99久久久 | 一区二区三区精彩视频 | 另类小说色综合 | 美女av片| 又黄又色的网站 | 奇米影视中文字幕 | 免费黄色欧美 | 久久性感视频 | 激情深爱五月 | 意大利性荡欲xxxxxx | 少妇饥渴放荡91麻豆 | 国产精品无码乱伦 | 久久这里只有精品久久 | 韩国一区二区在线观看 | 亚洲第8页 | 91麻豆国产精品 | 亚洲国产精品综合久久久 | 国产91精品久久久久 | 强行糟蹋人妻hd中文字幕 | 国产一区一一区高清不卡 | 金鱼妻日剧免费观看完整版全集 | 国产最新在线视频 | 殴美黄色大片 | 成人勉费视频 | 亚洲综合色吧 |