欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

幫助避免錯(cuò)誤的Javascript陷阱清單

 更新時(shí)間:2009年05月31日 00:53:37   作者:  
幫助避免錯(cuò)誤的Javascript陷阱清單(Javascript Gotchas listed to help avoid mistakes)

翻譯講究"信\雅\達(dá)",我就談不上了.希望能把文章的意思不要弄錯(cuò)就行.

編程的陷阱(gotcha)是指計(jì)算機(jī)系統(tǒng)中的意想不到的文檔特征而不是bug.這些陷阱使得初學(xué)者遠(yuǎn)離javascript編程.在我看來(lái),因?yàn)樗械臑g覽器都能運(yùn)行javascript使得它是使用最廣泛的語(yǔ)言之一,但它也是最少人研究的.讓我們從一個(gè)基礎(chǔ)的示例開(kāi)始.

1.浮點(diǎn)運(yùn)算

這可能是挫敗一些對(duì)javascript不熟悉并準(zhǔn)備執(zhí)行一些數(shù)學(xué)運(yùn)算的人的主要原因.

  1. <script>  
  2. alert(0.02 / 0.1);  //0.19999999999999998   
  3. alert(1.14 * 100);  //113.99999999999999    ;)  
  4. </script> 

Math.round()就能在這里派上用場(chǎng).

2.加號(hào)操作符的重載

"+"加號(hào)運(yùn)算符即能做算術(shù)運(yùn)算,又能夠做字符串的連接.如果正確的使用它是很便利的.讓我們看一看.

  1. <script>  
  2. var msg, one="1";  
  3. msg = 2 + "1"// msg = "21"  
  4. msg = 2 + one; // msg = "21"  
  5. msg = 1 + 1 + 1 + " musketeers"// msg = "3 musketeers"  
  6. msg = "Bond " + 0 + 0 + 7; //msg = "Bond 007"    
  7. </script> 

上述行為是因?yàn)檫@些運(yùn)算都是從左到右執(zhí)行的.類型的轉(zhuǎn)換是基于其中的字符串或數(shù)字.

3.行尾插入分號(hào)

javascript 自動(dòng)在行尾插入分號(hào)";",讓我們來(lái)看看這在一個(gè)簡(jiǎn)單的示例中的情況.

  1. <script>  
  2. function returnSame(a){  
  3.    return                 //Inserts semi-colon to convert to return;  
  4.    a                      //a becomes a; - Unreachable  
  5. }  
  6. alert(returnSame(2));  //Output is undefined  
  7. </script> 

當(dāng)在創(chuàng)建對(duì)象或使用對(duì)象的值的時(shí)候這個(gè)神奇的分號(hào)能使事情變得更復(fù)雜.

4.typeof操作符

typeof 是一個(gè)一元操作符,運(yùn)算結(jié)果往往并不是如預(yù)期的那樣.令人吃驚的是對(duì)"null"的運(yùn)算結(jié)果是"object"

  1. <script>  
  2. var obj={};  //object created using object literal  
  3. var arr=[];  //array created by array literal  
  4. alert(typeof(obj));   //object  - Good  
  5. alert(typeof(arr));   //object  - Bad  
  6. alert(typeof(null));  //object  - Ugly!  ;) 
  7. </script>

它僅僅能查找對(duì)象的原始類型.

5. false, null, undefined, NaN, Infinity

盡管他們看起來(lái)相似,但他們代表著不通的意思.javascript有3種基本數(shù)據(jù)類型數(shù)字numbers, 字符串strings 和布爾 boolean,除此之外還有兩個(gè)不重要的數(shù)據(jù)類型"undefine"和"null".按照"=="運(yùn)算符運(yùn)算,null和undefine是相等的.

  1. <script>  
  2. var a;  
  3. alert (a);    //undefined  
  4. alert (1/0);  //Infinity  
  5. alert (0/0);  //NaN  
  6. 0/0 == 0/0;   //false - a NaN != NaN  
  7. alert (b);    //error  
  8. </script> 

6.字符串只替換第一個(gè)匹配的字符

與PHP或其他程序語(yǔ)言不同,默認(rèn)情況下,javascript的字符替換只替換第一個(gè)出現(xiàn)的匹配的字符.

  1. <script>  
  2. var nospace = "I dont need spaces".replace(" ","_");  
  3. alert(nospace);    //I_dont need spaces   - Only first occurence  
  4. var nospace = "I dont need spaces".replace(/ /g,"_");  
  5. alert(nospace);    //I_dont_need_spaces  
  6. </script> 

 7.parseInt 函數(shù)

parseInt 用來(lái)將一個(gè)字符串轉(zhuǎn)換為整數(shù)類型.這個(gè)函數(shù)能傳入兩個(gè)參數(shù),第二個(gè)參數(shù)是指定多少進(jìn)制的.這里十進(jìn)制用 10 指定.如果沒(méi)有指定進(jìn)制,則parseInt函數(shù)自己會(huì)試圖找到合適的進(jìn)制.如果是這樣,以0開(kāi)頭的字符串將會(huì)轉(zhuǎn)換為8進(jìn)制.

  1. <script>  
  2. var str = "017";  
  3. var strInt = parseInt(str);      //strInt = 15  ;)  
  4. var strInt = parseInt(str,10);   //strInt = 17  
  5. </script> 

相關(guān)文章

  • 讓JavaScript代碼更加精簡(jiǎn)的方法技巧

    讓JavaScript代碼更加精簡(jiǎn)的方法技巧

    這篇文章主要介紹了讓JavaScript代碼更加精簡(jiǎn)的方法技巧,文章通過(guò)使用?JavaScript對(duì)象解構(gòu)來(lái)節(jié)省代碼,JavaScript?對(duì)象解構(gòu)賦值在項(xiàng)目開(kāi)發(fā)中是一個(gè)常用的技能。下文實(shí)現(xiàn)過(guò)程需要的小伙伴可以參考一下
    2022-06-06
  • web基于瀏覽器的本地存儲(chǔ)方法應(yīng)用

    web基于瀏覽器的本地存儲(chǔ)方法應(yīng)用

    在客戶端存儲(chǔ)數(shù)據(jù)時(shí),我們一般都用cookie(不敏感數(shù)據(jù)),但是在客戶端越來(lái)越富的今天,cookie可存儲(chǔ)的量(每個(gè)域最大4k)實(shí)在是小,已經(jīng)滿足不了我們的需求
    2012-11-11
  • 原生JS中slice()方法和splice()區(qū)別

    原生JS中slice()方法和splice()區(qū)別

    slice()方法和splice()方法都是原生js中對(duì)數(shù)組操作的方法。那么他兩種有什么區(qū)別呢?今天通過(guò)本文教程給大家簡(jiǎn)單介紹下,需要的朋友可以參考下
    2017-03-03
  • 鼠標(biāo)事件延時(shí)切換插件

    鼠標(biāo)事件延時(shí)切換插件

    為了防止誤操作,很多時(shí)候需要對(duì)鼠標(biāo)滑過(guò)觸發(fā)的事件進(jìn)行延時(shí)處理。網(wǎng)易首頁(yè)的選項(xiàng)卡好幾年之前就添加了這個(gè)特性,當(dāng)時(shí)我記得是采用150毫秒作為觸發(fā)基準(zhǔn)
    2011-03-03
  • 純js代碼生成可搜索選擇下拉列表的實(shí)例

    純js代碼生成可搜索選擇下拉列表的實(shí)例

    下面小編就為大家分享一篇純js代碼生成可搜索選擇下拉列表的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • JavaScript之Object類型介紹

    JavaScript之Object類型介紹

    這篇文章主要介紹了JavaScript之Object類型介紹,本文講解了創(chuàng)建Object類型的兩種方法以及訪問(wèn)Object類型的方法,需要的朋友可以參考下
    2015-04-04
  • javascript 節(jié)點(diǎn)排序 2

    javascript 節(jié)點(diǎn)排序 2

    對(duì)支持sourceIndex的HTML文檔的節(jié)點(diǎn)重排,使用JK提供的思路,速度至少比單純使用nodes.sort(function(a,b){return a.sourceIndex - b.sourceIndex})這種方式快兩倍
    2011-01-01
  • window.location的重寫及判斷l(xiāng)ocation是否被重寫

    window.location的重寫及判斷l(xiāng)ocation是否被重寫

    這篇文章主要介紹了window.location的重寫及判斷l(xiāng)ocation是否被重寫,需要的朋友可以參考下
    2014-09-09
  • 純js封裝的ajax功能函數(shù)與用法示例

    純js封裝的ajax功能函數(shù)與用法示例

    這篇文章主要介紹了純js封裝的ajax功能函數(shù)與用法,結(jié)合實(shí)例形式分析了基于JavaScript封裝的ajax功能函數(shù)定義及與php后臺(tái)交互相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • JScript中的prototype(原型)屬性研究

    JScript中的prototype(原型)屬性研究

    我們知道JScript中對(duì)象的prototype屬性,是用來(lái)返回對(duì)象類型原型的引用的。
    2010-04-04

最新評(píng)論