<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    ECMAScript基礎(chǔ)

    Posted on 2007-02-06 14:03 dennis 閱讀(432) 評論(0)  編輯  收藏 所屬分類: web開發(fā)
    ?開始讀《JAVASCRIPT高級程序設(shè)計》
    第2章 ECMAScript基礎(chǔ)

    JavaScript實質(zhì)上是ECMAScript在web環(huán)境中的實現(xiàn),還有其他實現(xiàn)(如Flash的ActionScript等)。因此了解基本的ECMAScript相當于掌握javascript的基礎(chǔ)。

    1。ECMAScript的基礎(chǔ)概念:
    1)區(qū)分大小寫
    2)變量是弱類型(解釋型語言的基本特點)
    3)每行結(jié)尾的分號可有可無(與java不同)
    4)注釋的形式與java相同(單行或者塊注釋)
    5)大括號代表代碼塊{}

    2。變量,使用var定義。如var test="test1"
    當然,變量是弱類型,并且可以不被初始化而定義
    var test="test1"
    var test2;
    test=1;
    建議采用匈牙利類型標記法來命名變量。

    3.關(guān)鍵字和保留字(略)

    4。原始值和引用值
    與java類似,變量分成原始類型與引用類型兩類:
    1)原始值存儲在stack中
    2)引用值是存儲在heap中的對象,存儲在變量處的是一個point

    5。原始類型:
    1)ECMAScript有5種原始類型:Undefined、Null、Boolean、Number和String。可以使用typeof來判斷一個值是否在某類型的范圍內(nèi)。如:
    var?s="test";
    alert(
    typeof?s)??//輸出"string"

    注意:type null返回object,因為null被認為是對象的占位符。

    2)Undefined類型
    當變量未初始化時,該變量的默認值就是undefined。但是,undefined并不同于未定義的值。但是,typeof并不區(qū)分兩者,比如:
    var?temp1;
    alert(
    typeof?temp1);??//未初始化,輸出undefined
    alert(typeof?temp2);???//未定義,也是undefined


    函數(shù)無返回值,返回的也是undefined

    3)Null類型
    Null只有一個值,也就是null。Undefined本質(zhì)上是從Null派生來的,因此兩者相等:
    alert(null==undefined);? //輸出true
    但兩者意義不同,Undefined表示變量未被初始化之前的值,而Null則表示尚未存在的對象,也就是對象的占位符。

    4)Boolean類型
    Boolean有兩個值:true,false

    5)Number類型
    Number類型很有趣,Number可以表示32位的數(shù)字,也可以表示64位的浮點數(shù),以0開頭的數(shù)字當成八進制,以ox開頭即為十六進制。有趣的地方在于所有數(shù)字運算結(jié)果都是返回十進制!
    在ECMAScript中,浮點數(shù)的計算本質(zhì)上是存儲的是字符串。
    Number類型的大小在Number.MAX_VALUE和Number.MIN_VALUE之間
    無窮大用Infinity表示,如你所見,Number.MAX_VALUE就是Infinity,而Number.MIN_VALUE就是-Infinity,可以通過isFinite(n)來判斷n是否超過界限

    最后,還有一個特殊值是NaN,表示Not a Number(非數(shù)),非數(shù)產(chǎn)生在類型轉(zhuǎn)換失敗時,注意,它與自身不相當:alert(NaN==NaN);? //輸出false

    不推薦使用NaN,我們可以通過isNaN()來判斷是否是非數(shù)(很常用咯)

    6) String類型
    String是唯一沒有固定大小的原始類型,可以存儲0或者多個Unicode字符。與java不同的是,可以使用雙引好和單引號來聲明字符:
    var s1="test1";
    var s2='test2';
    常見轉(zhuǎn)義符與其他語言相同。

    6。類型轉(zhuǎn)換
    1)轉(zhuǎn)換成字符串:
    Boolean,String和Number類型本質(zhì)上都是偽對象,他們都有toString()方法(與java相同)

    Number類型的toString()有兩種模式:
    toString(),返回數(shù)字的十進制
    toString(n),返回n進制的字符串(n為2,8,10,16)

    2)轉(zhuǎn)換成數(shù)字:
    兩個方法:parseInt()和parseFloat()方法。用法略過,需要注意的是parseInt如果沒指定基數(shù),會把以0開始的解析為8進制。parseFloat反而不會。

    3)強制類型轉(zhuǎn)換:
    3種強制類型轉(zhuǎn)換:
    String(value);
    Boolean(value);
    Number(value);
    規(guī)則如下:
    (1)String(value)與toString()基本一樣,除了對null或者undefined的轉(zhuǎn)換之外,如:
    var s1=String(null); //通過
    var oNull=null;
    var s2=oNull.toString(); //報錯

    (2)Boolean(value),如果該value是空字符串、數(shù)字0、undefined或者null,返回false,其他返回true

    (3)Number()與parseInt和parseFloat基本相同,不同的是Number()將轉(zhuǎn)換整體,如果轉(zhuǎn)換失敗返回NaN。如:
    Number(false)??;//??0
    Number(true);??//???1
    Number(new?Object());???//??NaN
    Number('5.6.7');????//??NaN


    7。引用類型:
    1)Object類:類似于java中java.lang.Object的地位和作用,js中所有類都繼承此類而來。它包含下面的屬性:
    (1)Constructor——對創(chuàng)建該對象函數(shù)的引用
    (2)Prototype——對該對象對象原型的引用,對所有的類,它將返回一個Object實例
    (3)HasOwnProperty(property)——判斷是否有某個屬性
    (4)IsPropertOf(object)——判斷該對象是否為另一個對象的原型
    (5)PropertyIsEnumerable(property)——判斷對象的屬性是否可以枚舉
    (6)ToString()——返回對象的原始字符串表示
    (7)ValueOf()——返回最適合該對象的原始值,對于許多類,它的結(jié)果與ToString()相同

    2)Boolean類,盡量避免使用,注意的是,在Boolean表達式中,所有的值將被自動轉(zhuǎn)化為true,所以下面的輸出:
    var oFalseObject=new Boolean(false);
    alert(oFalseObject&&true);? //輸出true,而不是false

    3) Number類,是Number原始類型的引用類型,應(yīng)該少使用此類,盡量使用原始類型。需要注意3個方法:
    (1)toFixed():返回具有指定位數(shù)小數(shù)的字符串,如:
    var oNumberObject=new Number(99);
    alert(oNumberObject.toFixed(2));? // 輸出99.00

    ?(2) toExponential(),返回用科學記數(shù)法表示的數(shù)字的字符串形式,如:
    var oNumberObject=new Number(99);
    alert(oNumberObject.toExponential(1));? //輸出9.9e+1

    (3)toPrecision(),對數(shù)進行舍入,返回盡可能接近真實值的數(shù)字,如:
    var oNumberObject=new Number(99);
    alert(oNumberObject.toPrecision(3));? //輸出99.0
    注意,這3個方法都將進行四舍五入操作

    4)String類,是String原始類型的對象,常見方法見下面的例子:

    var?oStringObject=new?String("hello?world");
    alert(oStringObject.length);??
    //輸出11
    alert(oStringObject.toString()==oStringObject.valueOf());??//輸出true
    alert(oStringObject.charAt(1));???//輸出e
    alert(oStringObject.charCodeAt(1));?//輸出e的字符代碼:101
    alert(oStringObject.concat(",china"));???//輸出hello?world,china
    alert(oStringObject.indexOf("e"));???//輸出1
    alert(oStringObject.lastIndexOf("o"));??//輸出7

    var?oStringObject1=new?String("yellow");
    var?oStringObject2=new?String("brick");
    var?iResult=oStringObject1.localeCompare(oStringObject2);??//根據(jù)本地比較
    if(iResult>0){
    ??alert(
    "oStringObject1在oStringObject2后面");
    }
    else?if(iResult<0){
    ???alert(
    "oStringObject1在oStringObject2前面");
    }
    else
    ???alert(
    "oStringObject1和oStringObject2相同");
    alert(oStringObject.substring(
    3,7));??//輸出"lo?w"
    alert(oStringObject.slice(3,7));??//輸出"lo?w"
    alert(oStringObject.toUpperCase());
    alert(oStringObject.toLowerCase());
    alert(
    "中國".toLocaleLowerCase());


    8.操作符和語句,省略大部分操作符的介紹和控制語句,與其他語言(java,ruby)基本相同,需要注意的摘抄如下:
    1)delete操作符:用于刪除對以前定義的對象屬性或者方法的引用,如:
    var?o=new?Object();
    o.name
    ="dennis";
    alert(o.name);?
    //輸出dennis
    delete?o.name;???//解除引用
    alert(o.name);??//輸出undifined


    2)for ... in語句,嚴格的枚舉語句,用于枚舉對象屬性

    3)switch可以作用于字符串,而不僅僅是整數(shù)

    4)不支持重載(與ruby相同),可以通過arguments對象來變相實現(xiàn)

    5)在ECMAScript中,函數(shù)其實是完整一個對象(與ruby相同,或者說動態(tài)語言的基本特點),可以采用:
    var function_name=new Function(arg1,arg2,arg3,...,function_body);
    來定義函數(shù)(速度比普通方法慢)。函數(shù)可以作為參數(shù)傳遞,函數(shù)的length屬性返回此函數(shù)的參數(shù)個數(shù)
    6)ECMAScript的閉包概念與其他動態(tài)語言的概念很不同,我還不大理解,過段時間好好研究一下。(寫入備忘錄)
    主站蜘蛛池模板: 在线毛片片免费观看| 少妇性饥渴无码A区免费| 最近最新MV在线观看免费高清| 亚洲AV无码国产丝袜在线观看 | 67pao强力打造国产免费| 亚洲爆乳精品无码一区二区三区| 午夜免费国产体验区免费的| 亚洲高清视频一视频二视频三| 免费视频成人国产精品网站| 亚洲视频在线一区二区| 国产精品高清免费网站| 亚洲国产精品无码久久一区二区| 九九美女网站免费| 亚洲婷婷在线视频| 免费理论片51人人看电影| 国产精品无码亚洲精品2021| 亚洲成人一区二区| 99在线热播精品免费99热| 亚洲午夜未满十八勿入| 成人毛片免费观看视频大全| 亚洲av无码成人精品国产| 亚洲精品国产精品乱码不卡| 午夜视频免费在线观看| 亚洲欧洲综合在线| 日韩精品无码人妻免费视频| 一级毛片免费视频网站| 亚洲精品免费视频| 免费无码一区二区三区蜜桃大 | 91在线视频免费观看| 久久水蜜桃亚洲av无码精品麻豆| 久久午夜免费视频| 青青青视频免费观看| 亚洲国产精品第一区二区| 成人毛片免费观看视频在线| 好男人资源在线WWW免费 | 亚洲午夜精品一区二区| 免费的一级片网站| 鲁丝片一区二区三区免费| 亚洲色www永久网站| 亚洲人成精品久久久久| 久久精品a一国产成人免费网站|