freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

編寫高質(zhì)量代碼改善javascript程序的188個(gè)建議(編輯修改稿)

2025-07-19 12:17 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 true 4. isNaN(39。039。)//false判斷一個(gè)值是否可用做數(shù)字的最佳方法是使用isFinite函數(shù),因?yàn)樗鼤?huì)篩除掉NaN和Infinity。Infinity表示無窮大。當(dāng)數(shù)值超過浮點(diǎn)數(shù)所能夠表示的范圍時(shí),就要用Infinity表示。反之,負(fù)無窮大為–Infinity。使用isFinite函數(shù)能夠檢測(cè)NaN、正負(fù)無窮大。如果是有限數(shù)值,或者可以轉(zhuǎn)換為有限數(shù)值,那么將返回true。如果只是NaN、正負(fù)無窮大的數(shù)值,則返回false。不幸的是,isFinite會(huì)試圖把它的運(yùn)算數(shù)轉(zhuǎn)換為一個(gè)數(shù)字。因此,如果值不是一個(gè)數(shù)字,使用isFinite函數(shù)就不是一個(gè)有效的檢測(cè)方法,這時(shí)不妨自定義isNumber函數(shù)。1. varisNumber=functionisNumber(value){ 2. returntypeofvalue===39。number39。amp。amp。isFinite(value)。 3. }JavaScript有5種基本類型:String、Number、Boolean、Null和Undefined。前3種都比較好理解,后面兩種就稍微復(fù)雜一點(diǎn)。Null 類型只有一個(gè)值,就是null;Undefined類型也只有一個(gè)值,即undefined。 null 和undefined都可以作為字面量在 JavaScript 代碼中直接使用。null與對(duì)象引用有關(guān)系,表示為空或不存在的對(duì)象引用。當(dāng)聲明一個(gè)變量卻沒有向它賦值的時(shí)候,它的值就是undefined。undefined的值會(huì)在如下情況中出現(xiàn):從一個(gè)對(duì)象中獲取某個(gè)屬性,如果該對(duì)象及其prototype鏈中的對(duì)象都沒有該屬性,該屬性的值為undefined。一個(gè)函數(shù)如果沒有顯式通過return語句將返回值返回給其調(diào)用者,其返回值就是undefined,但在使用new調(diào)用函數(shù)時(shí)例外。JavaScript的函數(shù)可以聲明任意多個(gè)形參,當(dāng)該函數(shù)實(shí)際被調(diào)用時(shí),傳入的參數(shù)的個(gè)數(shù)如果小于聲明的形式參數(shù)的個(gè)數(shù),那么多余的形式參數(shù)的值為undefined。如果對(duì)值為null的變量使用typeof檢測(cè),得到的結(jié)果是“object”,而typeof undefined的值為“undefined”。null == undefined, null !== undefined。建議6:正確處理JavaScript特殊值(2)與null不同,undefined不是JavaScript的保留字,在ECMAScript v3標(biāo)準(zhǔn)中才定義undefined為全局變量,初始值為undefined。因此,在使用undefined值時(shí)就存在一個(gè)兼容問題(早期瀏覽器可能不支持undefined)。除了直接賦值和使用typeof運(yùn)算符外,其他任何運(yùn)算符對(duì)undefined的操作都會(huì)引發(fā)異常。不過,可以聲明undefined變量,然后查看它的值,如果它的值為undefined,則說明瀏覽器支持undefined值。例如:1. varundefined。 2. alert(undefined)。如果瀏覽器不支持undefined關(guān)鍵字,可以自定義undefined變量,并將其賦值為undefined。例如: 1. varundefined=voidnull。聲明變量為undefined,將其初始化為表達(dá)式void null的值,由于運(yùn)算符void在執(zhí)行其后的表達(dá)式時(shí)會(huì)忽略表達(dá)式的結(jié)果值,而總是返回值undefined,因此利用這種方法可以定義一個(gè)變量為undefined,并將其賦值為undefined。既然是將變量undefined賦值為undefined,還可以使用如下方式:1. varundefined=void1?;蛘呤褂脹]有返回值的函數(shù):1. varundefined=function(){}()。 2. alert(undefined)。//undefined可以使用typeof運(yùn)算符來檢測(cè)某個(gè)變量的值是否為undefined:1. vara。 2. if(typeofa==undefined){ 3. }JavaScript的類型系統(tǒng)是非常混亂的,類型特性不明顯,而且交叉錯(cuò)亂。JavaScript語法系統(tǒng)擁有一大組假值,如以下代碼所示。這些值的布爾值都是false。1. 0//Number 2. NaN//Number 3. 39。39。//String 4. false//Boolean 5. null//Object 6. undefined//Undefined這些值全部都等同于false,但它們是不可互換的。例如,下面用法是錯(cuò)誤的。 1. value=myObject[name]。 2. if(value==null){ 3. }這是在用一種錯(cuò)誤的方式去確定一個(gè)對(duì)象是否缺少一個(gè)成員屬性。undefined是缺失的成員屬性值,而上面代碼片段用null來測(cè)試,使用了會(huì)強(qiáng)制類型轉(zhuǎn)換的==運(yùn)算符,而不是更可靠的===運(yùn)算符。正確的用法如下: 1. value=myObject[name]。 2. if(!value){ 3. }undefined和NaN并不是常見,它們是全局變量,還可以改變它們的值,雖然在程序設(shè)計(jì)中不應(yīng)該采取這種做法,但可以改變它們的值。建議7:小心保留字的誤用JavaScript語言中定義了很多備用或已經(jīng)使用的保留字。 JavaScript語言中定義的保留字這些單詞中的大多數(shù)并沒有在語言中使用,但是根據(jù)JavaScript語法規(guī)則,這些單詞是不能用來命名變量或參數(shù)的。當(dāng)保留字作為對(duì)象字面量的鍵值時(shí),必須用引號(hào)括起來。保留字不能用在點(diǎn)語法中,所以有時(shí)必須使用中括號(hào)表示法。例如,下面的用法是合法的。1. varmethod。 2. object={box:value}。 3. object={39。case39。:value}。 4. =value。 5. object[39。case39。]=value。但是,下面的用法就是非法的。 1. varclass。 2. object={case:value}。 3. =value。各個(gè)瀏覽器對(duì)保留字的使用限制不同。例如,下面代碼在Firefox中是合法的,而在其他瀏覽器中就是不合法的。 1. object={case:value}。此外,不同的保留字也各不相同。例如,下面代碼在Firefox和Opera ,但在IE和Safari中依然是不合法的。1. object={class:value}。對(duì)于int、long、float等保留字,它們?cè)诟鳛g覽器中都可以用做變量名及對(duì)象字面量的鍵值。盡管如此,在這些場(chǎng)合依然不建議使用任何保留字。建議8:謹(jǐn)慎使用運(yùn)算符(1)===,而不用==JavaScript有兩組相等運(yùn)算符:===和!==、==和!=。===和!==這一組運(yùn)算符會(huì)按照期望的方式工作。如果兩個(gè)運(yùn)算數(shù)類型一致且擁有相同的值,那么===返回true,而!==返回false。==和!=只有在兩個(gè)運(yùn)算數(shù)類型一致時(shí)才會(huì)做出正確的判斷,如果兩個(gè)運(yùn)算數(shù)是不同的類型,會(huì)試圖強(qiáng)制轉(zhuǎn)換運(yùn)算數(shù)的類型。轉(zhuǎn)換的規(guī)則復(fù)雜且難以記憶,具體規(guī)則如下:1. 39。39。==39。039。//false 2. 0==39。39。//true 3. 0==39。039。//true 4. false==39。false39。//false 5. false==39。039。//true 6. false==undefined//false 7. false==null//false 8. null==undefined//true上面表達(dá)式如果全部使用===運(yùn)算符,則都會(huì)返回true。==和!=運(yùn)算符缺乏傳遞性,需要引起警惕。所謂傳遞性就是:如果a==b為true,b==c為true,則a==c也為true。因此,在JavaScript開發(fā)中,建議永遠(yuǎn)不要使用==和!=,而選用===和!==運(yùn)算符。下面分別介紹一下===和==運(yùn)算符的算法。(1)===運(yùn)算符的算法在使用===來判斷兩個(gè)值是否相等時(shí),如判斷x===y,會(huì)先比較兩個(gè)值的類型是否相同,如果不相同,直接返回false。如果兩個(gè)值的類型相同,則接著根據(jù)x的類型展開不同的判斷邏輯:如果x的類型是Undefined或Null,則返回 true。如果x的類型是Number,只要x 或y中有一個(gè)值為NaN,就返回 false;如果x和y的數(shù)字值相等,就返回 true;如果x或y中有一個(gè)是+0,另外一個(gè)是–0,則返回 true。如果x的類型是String,當(dāng)x和y的字符序列完全相同時(shí)返回 true,否則返回 false。如果x的類型是Boolean,當(dāng)x和y同為true或false時(shí)返回 true,否則返回 false。當(dāng)x和y引用相同的對(duì)象時(shí)返回 true,否則返回 false。(2)==運(yùn)算符的算法在使用==來判斷兩個(gè)值是否相等時(shí),如判斷x==y,如果x和y的類型一樣,判斷邏輯與=== 一樣;如果x和y的類型不一樣,==不是簡(jiǎn)單地返回false,而是會(huì)進(jìn)行一定的類型轉(zhuǎn)換。如果x和y中有一個(gè)是 null,另外一個(gè)是undefined,返回true,如null == undefined。如果x和y中有一個(gè)類型是String,另外一個(gè)類型是Number,會(huì)將String類型的值轉(zhuǎn)換成 Number來比較,如3 == 3。如果x和y中有一個(gè)類型是Boolean,會(huì)將Boolean類型的值轉(zhuǎn)換成Number來比較,如true == true == 1。如果x和y中有一個(gè)類型是String或Number,另外一個(gè)類型是Object,會(huì)將Object類型的值轉(zhuǎn)換成基本類型來比較,如[3,4] == 3,4。++和遞增(++)和遞減()運(yùn)算符使程序員可以用非常簡(jiǎn)潔的風(fēng)格去編碼,如在C語言中,它們使得通過一行代碼實(shí)現(xiàn)字符串的復(fù)制成為可能,例如:1. for(p=src,q=dest。!*p。p++,q++)*q=*p。事實(shí)上,這兩個(gè)運(yùn)算符容易形成一種不謹(jǐn)慎的編程風(fēng)格。大多數(shù)的緩沖區(qū)溢出錯(cuò)誤所造成的安全漏洞都是由于這種編碼導(dǎo)致的。當(dāng)使用++和時(shí),代碼往往變得過于緊密、復(fù)雜和隱晦。因此,在JavaScript程序設(shè)計(jì)中不建議使用它們,從而使代碼風(fēng)格變得更為整潔。建議8:謹(jǐn)慎使用運(yùn)算符(2)++和運(yùn)算符只能夠作用于變量、數(shù)組元素或?qū)ο髮傩浴O旅娴挠梅ㄊ清e(cuò)誤的。1. 4++。正確的用法如下:1. varn=4。 2. n++。++和運(yùn)算符的位置不同所得運(yùn)算結(jié)果也不同。例如,下面的遞增運(yùn)算符是先執(zhí)行賦值運(yùn)算,然后再執(zhí)行遞加運(yùn)算。1. varn=4。 2. n++。//4而下面的遞增運(yùn)算符是先執(zhí)行遞加運(yùn)算,再進(jìn)行賦值運(yùn)算。1. varn=4。 2. ++n。逗號(hào)在JavaScript語言中表示連續(xù)運(yùn)算,并返回最后運(yùn)算的結(jié)果。例如,在下面這個(gè)示例中,JavaScript先運(yùn)算第一個(gè)數(shù)值直接量,再運(yùn)算第二個(gè)數(shù)值直接量,然后運(yùn)算第三個(gè)數(shù)值直接量,最后運(yùn)算第四個(gè)數(shù)值直接量,并返回最后一個(gè)運(yùn)算值4。1. vara=(1,2,3,4)。 2. alert(a)。//4再如:1. a=1,b=2,c=3。等價(jià)于:1. a=1。 2. b=2。 3. c=3。作為運(yùn)算符,逗號(hào)一般用在特殊環(huán)境中,即在只允許出現(xiàn)一個(gè)句子的地方,把幾個(gè)不同的表達(dá)式句子合并成一個(gè)長(zhǎng)句。在JavaScript實(shí)際開發(fā)中,逗號(hào)運(yùn)算符常與for循環(huán)語句聯(lián)合使用。例如,在下面這個(gè)簡(jiǎn)單的for循環(huán)結(jié)構(gòu)中,通過連續(xù)的運(yùn)算符在參數(shù)表達(dá)式中運(yùn)算多個(gè)表達(dá)式,以實(shí)現(xiàn)傳遞或運(yùn)算多個(gè)變量或表達(dá)式。 1. for(vara=10,b=0。ab。a++,b+=2){ 2. (a=+a+b=+b+br)。 3. }逗號(hào)運(yùn)算符比較“怪異”,稍不留心就會(huì)出錯(cuò)。例如,在下面這個(gè)簡(jiǎn)單的示例中,變量a的返回值為1,而不是連續(xù)運(yùn)算后的返回值4。1. a=1,2,3,4。 2. alert(a)。//1第一個(gè)數(shù)值1先賦值給變量a,然后a再參與連續(xù)運(yùn)算,整個(gè)句子的返回值為4,而變量a的返回值為1,代碼演示如下:1. alert((a=1,2,3,4))。//4 2. alert(a=(1,2,3,4))。//4建議8:謹(jǐn)慎使用運(yùn)算符(3)要確保變量a的值為連續(xù)運(yùn)算,可以使用小括號(hào)邏輯分隔符強(qiáng)迫4個(gè)數(shù)值先進(jìn)行連續(xù)運(yùn)算,然后再賦值。1. a=(1,2,3,4)。 2. alert(a)。//4當(dāng)使用var關(guān)鍵字來定義變量時(shí),會(huì)發(fā)現(xiàn)a最終沒有返回值。1. vara=1,2,3,4。 2. alert(a)。//null要確保var聲明的變量正確返回連續(xù)運(yùn)算的值,需要使用小括號(hào)先強(qiáng)迫數(shù)值進(jìn)行計(jì)算,最后再把連續(xù)運(yùn)算的值賦值給變量a。1. vara=(1,2,3,4)。 2. alert(a)。//4JavaScript運(yùn)算符一般不會(huì)對(duì)運(yùn)算數(shù)本身產(chǎn)
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1