中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

詳解JavaScript的另類寫法
來(lái)源:易賢網(wǎng) 閱讀:943 次 日期:2016-07-08 13:54:34
溫馨提示:易賢網(wǎng)小編為您整理了“詳解JavaScript的另類寫法”,方便廣大網(wǎng)友查閱!

這篇文章主要介紹了詳解JavaScript的另類寫法的相關(guān)資料,需要的朋友可以參考下

JavaScript 是屬于網(wǎng)絡(luò)的腳本語(yǔ)言!

JavaScript 被數(shù)百萬(wàn)計(jì)的網(wǎng)頁(yè)用來(lái)改進(jìn)設(shè)計(jì)、驗(yàn)證表單、檢測(cè)瀏覽器、創(chuàng)建cookies,以及更多的應(yīng)用。

JavaScript 是因特網(wǎng)上最流行的腳本語(yǔ)言。

JavaScript 很容易使用!你一定會(huì)喜歡它的!

JavaScript一種解釋型的腳本語(yǔ)言,語(yǔ)法靈活,讓不同的人對(duì)同一個(gè)功能有很多種不同的寫法。怎樣組織JavaScript代碼才能讓別人一眼看出你不簡(jiǎn)單呢?是否很期待別人在看完你的代碼之后感嘆一句“原來(lái)還可以這樣寫”呢?

匿名函數(shù)的N種寫法

Js的匿名函數(shù)是未申明函數(shù)名的自執(zhí)行函數(shù),格式如下:

(function(){})();

實(shí)際在項(xiàng)目上我們經(jīng)常是在前面加上“;”:

;function(){}();

因?yàn)镴s的語(yǔ)法是可以省略分號(hào)的,但是這種機(jī)制也會(huì)導(dǎo)致意外的錯(cuò)誤。為了避免代碼上線后合并壓縮成一個(gè)文件造成語(yǔ)法錯(cuò)誤,所以加上“;”可以避免未知錯(cuò)誤。

但有時(shí)我們看見別人的庫(kù)或是插件里面會(huì)這樣寫匿名函數(shù):

+function(){}();

“+”在這里是運(yùn)算符,運(yùn)算符具有極高的優(yōu)先級(jí),所以右邊的函數(shù)聲明加上括號(hào)的部分(實(shí)際上就是函數(shù)執(zhí)行的寫法)就直接執(zhí)行了。其實(shí)不止前面可以是“+”號(hào),“-”、“!”、“~”、“++”等運(yùn)算符均可。這里只是做擴(kuò)展介紹,具體用哪種寫法看團(tuán)隊(duì)統(tǒng)一規(guī)范。

拋棄Math.ceil()和Math.floor取整

也許在別的代碼中看到過這兩種符號(hào)~~和|0,直接看運(yùn)行結(jié)果:

>> var a1 = 1.23

>> ~~a1

1

>> var a2 = 2.345

>> a2|0

2

>> var a3 = -3.45

>> ~~a3

-3

>> var a4 = -4.5

>> a4|0

-4

注明下,這種寫法不是原創(chuàng),只是引用過來(lái)分析和說明下這種另類的寫法。簡(jiǎn)單解釋,~是按位取反的運(yùn)算符,可以將浮點(diǎn)數(shù)通過舍去小數(shù)點(diǎn)后面的所有位來(lái)轉(zhuǎn)換為整數(shù)。正整數(shù)可轉(zhuǎn)換為無(wú)符號(hào)的十六進(jìn)制值。然后再取反一次(~~)負(fù)負(fù)得正,就得到原來(lái)的整數(shù)。就是這么任性不愛調(diào)方法,你說算不算也是一種優(yōu)化呢。

注意:如果需要做嚴(yán)格的四舍五入運(yùn)算就要慎用此方法,那就還是得用Math函數(shù)。

if和else也不是唯一

用if-else的條件判斷是很清晰的邏輯,在處理數(shù)據(jù)量不大情況下看起就不是很簡(jiǎn)潔:

if (a===1) { //此處強(qiáng)烈建議用嚴(yán)格等于符號(hào)“===”,不會(huì)進(jìn)行類型轉(zhuǎn)換

a=2

} else if (a===3) {

a=4

} else {

a=5

}

看看用||和&&給代碼瘦身后:

((a===1)&&(true,a=2))||((a===3)&&(true,a=4))||(a=5)

一行就搞定,瘦身成功。||和&&,很簡(jiǎn)單的原理就不用說啦,里面用到逗號(hào)運(yùn)算符還不容易理解,可以繼續(xù)換成三元運(yùn)算符:

(a===1 )? a=2:( (a===3) ? (a=4) : (a=5) )

這種寫法看起來(lái)結(jié)構(gòu)是夠簡(jiǎn)化,但是別人看你的代碼會(huì)有點(diǎn)吃力。

用toString替代煩人的字符串拼接DOM結(jié)構(gòu)

如果要?jiǎng)討B(tài)生成一個(gè)dom結(jié)構(gòu)一般我們是這樣實(shí)現(xiàn)的 :

var template = "<div>"

+ "<h2>{title}</h2>"

+ "<div class='content' yAttr=''>{content}</div>"

+ "</div>"

如果再添加各種屬性和參數(shù)進(jìn)去,大、小引號(hào)混亂很容易報(bào)錯(cuò)。然而ES6提供了Template String幫我們解決了這個(gè)問題,你可以這樣寫:

var template = <div> 

<h2>{title}</h2> 

<div class='content' yAttr=''>{content}</div> 

</div>

可問題是ES6現(xiàn)在還未正式來(lái)啊…不怕,function.toString來(lái)解決我們青黃不接時(shí)的尷尬:

var rComment = /\/\*([\s\S]*?)\*\//;

// multiply string 

function ms(fn){ 

return fn.toString().match(rComment)[1]

}; 

ms(function(){/* 

<div> 

<h2>{title}</h2> 

<div class='content' yAttr=''>{content}</div> 

</div> */

})

這里的輸出和前面的字符串輸出一樣一樣滴,前端程序猿們只需要關(guān)注自己的dom結(jié)構(gòu)就好了。

添加AMD模塊支持,提示代碼B格

給你寫的代碼聲明一下AMD(異步模塊定義,Asynchronous Module Definition)模塊規(guī)范,這樣別人就可以直接通過AMD的規(guī)范來(lái)加載你的模塊了,如果別人沒有通過規(guī)范來(lái)加載你的模塊,你也可以優(yōu)雅地返回一個(gè)常規(guī)的全局對(duì)象。來(lái)看看jQueryUI的寫法:

(function( factory ) { 

if ( typeof define === "function" && define.amd ) { 

// AMD模式。且依賴"jQuery"這個(gè)插件 

define( [ "jquery" ], factory ); } 

else { 

// 瀏覽器全局模式 

factory( jQuery ); 

}(function( $ ) { 

// 這里放模塊代碼 

return $.widget; 

}));

改成AMD模塊的結(jié)構(gòu),讓你的代碼更適于瀏覽器端加載腳本依賴,按照這種格式來(lái)寫代碼,保證別人一看代碼就知道你是個(gè)專業(yè)的開發(fā)者。

繼承最優(yōu)法

JavaScript的靈活性,大大小小的繼承方式有十余種之多。每種寫法優(yōu)缺點(diǎn)各異,各家方法不一一列舉,舉個(gè)常用的繼承方法為例,原型繼承:

function Parent() {}

function Child() {}

Child.prototype = Parent.prototype

Child.prototype.constructor = Child ;

這種這種方法實(shí)際上是將Child.prototype和Parent.prototype中保存的指針指向了同一個(gè)對(duì)象,所以子對(duì)象原型中擴(kuò)展一些屬性以便之后繼續(xù)繼承的話,父對(duì)象的原型也會(huì)被改寫。所以為了解決這個(gè)問題,嘗試借用一個(gè)臨時(shí)構(gòu)造器的寫法:

function Empty(){}

Empty.prototype = Parent.prototype;

Child.prototype = new Empty();

Child.prototype.constructor = Child;

這樣父對(duì)象的自身屬性和原型方法得到保護(hù)。“最優(yōu)”有點(diǎn)夸大,但是是相比較而言的。相信每個(gè)人都有自己的寫法,還有借用call和apply實(shí)現(xiàn)屬性繼承的優(yōu)缺點(diǎn),篇幅有限不一一介紹。

總結(jié)

上述所有的JavaScript的另類寫法,一些是為了程序易懂或者效率提高的語(yǔ)法糖,這樣的做法是比較可取的,比如前面所說的省略if-else的做法。一些是為了提升我們代碼的兼容性和性能,比如AMD和繼承的方式。……本人菜鳥一枚,上述內(nèi)容肯定還有不全和沒解釋透徹的地方以后再補(bǔ)充。

以上內(nèi)容是針對(duì)JavaScript的另類寫法的相關(guān)介紹,希望對(duì)大家有所幫助!

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:詳解JavaScript的另類寫法
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2026上岸·考公考編培訓(xùn)報(bào)班

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲乱码国产乱码精品精98午夜| 亚洲精品视频啊美女在线直播| 国产一区二区三区不卡在线观看| 欧美性色aⅴ视频一区日韩精品| 亚洲午夜精品17c| 午夜精品国产| 国产在线精品自拍| 欧美在线一二三| 久久久久久亚洲综合影院红桃| 国产欧美日韩在线视频| 久久成人免费电影| 国产麻豆日韩欧美久久| 亚洲一区在线播放| 欧美日韩精品在线视频| 9人人澡人人爽人人精品| 欧美凹凸一区二区三区视频| 亚洲国产视频一区| 欧美肥婆在线| 9久re热视频在线精品| 欧美精品激情| 一区二区三区国产在线| 欧美精品一区二区三区在线看午夜| 亚洲国产精品成人久久综合一区| 欧美国产免费| 亚洲天天影视| 国产三区二区一区久久| 久久久蜜桃一区二区人| 亚洲国产1区| 欧美日韩一区二区三区四区在线观看| 在线中文字幕一区| 国产精品一区一区三区| 亚洲视频一区二区| 国产欧美一区二区精品性| 久久精品国产99| 亚洲国产精品电影| 国产精品久久久久国产a级| 欧美在线视频一区| 亚洲日本一区二区| 欧美电影免费观看高清完整版| 国产精品99久久久久久人| 国产亚洲欧美一区二区| 欧美日本国产| 久久激情视频| 99精品欧美一区二区三区综合在线| 国产精品久久国产三级国电话系列| 久久国产成人| 夜夜夜久久久| 狠狠综合久久av一区二区老牛| 欧美精品一区二区在线播放| 亚洲欧美在线aaa| 亚洲欧洲另类| 国产一区二区三区在线观看视频| 欧美精品v国产精品v日韩精品| 性欧美video另类hd性玩具| 亚洲高清在线观看| 国产美女精品一区二区三区| 欧美—级高清免费播放| 久久国产一二区| 一区二区三区色| 亚洲国产专区校园欧美| 国产精品扒开腿做爽爽爽软件 | 亚洲成色777777女色窝| 欧美视频一区二区在线观看 | 亚洲在线视频网站| 亚洲黄色免费| 国产一区二区三区久久精品| 欧美精品一区在线观看| 久久网站热最新地址| 亚洲欧美日韩精品一区二区| 夜色激情一区二区| 亚洲欧洲日本mm| 亚洲欧洲日本一区二区三区| 激情成人综合| 黑人巨大精品欧美一区二区| 欧美日韩国产在线播放| 麻豆精品在线播放| 久久亚洲免费| 久久精品夜色噜噜亚洲aⅴ| 亚洲精品看片| 亚洲国产综合在线| 在线欧美日韩| 亚洲国产经典视频| 国产伦一区二区三区色一情| 国产精品久久久久久久久动漫| 欧美精品videossex性护士| 午夜精品久久久久久久99樱桃 | 国产精品久久久久久久第一福利| 欧美高清在线视频观看不卡| 欧美在线免费观看亚洲| 午夜欧美大片免费观看| 亚洲综合电影| 国产精品美女午夜av| 欧美一级在线播放| 欧美在线免费看| 美女网站久久| 欧美体内she精视频在线观看| 国产精品成人一区二区网站软件| 国产亚洲欧美一级| 亚洲国产日韩欧美综合久久| 亚洲精品一区二区三区不| 亚洲欧美日韩一区二区在线 | 香蕉国产精品偷在线观看不卡| 久久这里只有| 国产精品mm| 尤物在线观看一区| 亚洲一区二区在线看| 久久综合图片| 国产农村妇女精品一区二区| 亚洲国产成人tv| 欧美一区2区视频在线观看| 欧美日韩国产电影| 亚洲国产精品www| 久久精品国产在热久久| 欧美午夜寂寞影院| 亚洲精品欧美日韩专区| 久久久久久久综合| 国产午夜精品一区理论片飘花| 欧美中文字幕久久| 欧美日韩国产精品一区| 在线精品在线| 久久本道综合色狠狠五月| 欧美亚州一区二区三区 | 国产精品久久久久aaaa九色| 亚洲成色www久久网站| 久久国产直播| 国产欧美一区二区三区久久| 亚洲欧美在线视频观看| 欧美网站在线观看| 中文高清一区| 欧美色欧美亚洲另类七区| 99视频精品在线| 欧美激情2020午夜免费观看| 在线观看精品一区| 免费亚洲一区二区| 亚洲高清视频中文字幕| 另类专区欧美制服同性| 亚洲电影成人| 欧美 日韩 国产在线| 亚洲精品1区| 欧美剧在线免费观看网站| 亚洲破处大片| 欧美日韩国产成人在线免费| 一本色道**综合亚洲精品蜜桃冫| 欧美成在线视频| 日韩一区二区精品葵司在线| 欧美三级不卡| 亚洲欧美在线另类| 国产日韩久久| 久久理论片午夜琪琪电影网| 1024国产精品| 欧美日韩一区二区三区在线看| 亚洲色图综合久久| 国产精品天天看| 久久夜色精品国产欧美乱| 亚洲精品久久久久久久久久久| 欧美日韩免费观看中文| 一本大道久久a久久综合婷婷| 欧美三级网址| 欧美一区二区精品在线| 一区二区三区无毛| 欧美日韩色综合| 久久国产精品99久久久久久老狼| 一区二区在线观看视频| 欧美黄色大片网站| 亚洲欧美日韩国产一区| 海角社区69精品视频| 欧美日韩国产精品| 久久久久久久久久久久久9999| 亚洲日韩中文字幕在线播放| 国产精品毛片大码女人| 久久久久久一区二区三区| 亚洲精品国精品久久99热一| 国产欧美日韩不卡免费| 欧美aaa级| 欧美一区二区网站| 亚洲美女在线视频| 韩国精品在线观看| 欧美日韩在线电影| 麻豆久久婷婷| 欧美亚洲一区二区在线| 99国产精品一区| 韩国免费一区| 激情亚洲成人| 国产精品九色蝌蚪自拍| 欧美成人免费在线观看| 欧美在线观看视频在线| 一本色道久久88综合日韩精品| 伊人精品成人久久综合软件| 欧美日韩亚洲综合一区| 久久婷婷激情| 欧美有码视频| 在线一区视频| 亚洲精品三级| 一区在线影院| 国产综合色一区二区三区| 欧美日韩中文字幕在线视频| 久久久国产精品亚洲一区| 亚洲欧美综合国产精品一区| 夜夜嗨av一区二区三区网页| 亚洲国产成人av|