javascript
JavaScript 学习笔记(1)
1.?????何為?Jscript
JScript?是一種解釋型的、基于對(duì)象的腳本語(yǔ)言。
?
局限性:?????
1)????????不能使用該語(yǔ)言來(lái)編寫(xiě)?yīng)毩⑦\(yùn)行的應(yīng)用程序
2)????????沒(méi)有對(duì)讀寫(xiě)文件的內(nèi)置支持
3)????????只能在某個(gè)解釋器或?“?宿主?”?上運(yùn)行,如?ASP?、?Internet?瀏覽器或者?Windows?腳本宿主
?
JScript?是一種寬松類(lèi)型語(yǔ)言?,?這意味著我們不必顯式定義變量的數(shù)據(jù)類(lèi)型。多數(shù)情況下,?JScript?將根據(jù)需要自動(dòng)進(jìn)行轉(zhuǎn)換。例如:將數(shù)值添加到字符串上時(shí),數(shù)值將被轉(zhuǎn)換為字符串(詳情見(jiàn)強(qiáng)制轉(zhuǎn)換)。
2.?????變量的聲明
var count;?????????????????//?變量聲明
var count = 0;???????????//?變量聲明?&?初始化
name = "";????????????????//?隱式聲明變量?name?,沒(méi)有使用關(guān)鍵字?var
?
1)????????????變量聲明之后就置于內(nèi)存之中,以便后來(lái)在腳本中使用
2)????????????若在?var?語(yǔ)句中變量沒(méi)有初始化,變量自動(dòng)取值?undefined?(?注?1)
3)????????????隱式聲明的變量擁有全局范圍可見(jiàn)度。當(dāng)在函數(shù)中聲明一個(gè)變量時(shí),該變量不能用于全局范圍,所以函數(shù)中聲明變量必須使用?var?關(guān)鍵
4)????????????不能使用未經(jīng)過(guò)聲明的變量
5)????????????聲明一個(gè)變量并進(jìn)行初始化,但又不想指定任何特殊值,可以賦值為?null?。
?
var count = null;
var money = 3 * count;???????// money?的值為?0?。
?
6)????????????聲明一個(gè)變量但沒(méi)有初始化,其值為?undefined
?
var longth;
var area = 10 * longth;???????// area?的值為?NaN?,因?yàn)?/span>?longth?為?undefined?。
***********************************??
*???JScript?中?null?和?undefined?的主要區(qū)別???*
***************************************
---???null?是關(guān)鍵字;
undefined?是?Global?對(duì)象的一個(gè)屬性。
?
---???null?是對(duì)象?(?空對(duì)象?,?沒(méi)有任何屬性和方法?)?;
undefined?是?undefined?類(lèi)型的值。
?
document.writeln(typeof null);?????????????????? //?輸出?object
document.writeln(typeof undefined);?????????//?輸出?undefined
?
---???對(duì)象模型中,所有的對(duì)象都是?Object?或其子類(lèi)的實(shí)例,但?null?對(duì)象例外:
document.writeln(null instanceof Object);//?輸出?false
?
---???null“?等值?(==)”?于?undefined?,但不?“?全等值?(===)”?于?undefined?:
document.writeln(null == undefined);????????????????//?輸出?true
document.writeln(null === undefined);?????????????//?輸出?false
?
---????運(yùn)算時(shí)?null?與?undefined?都可以被類(lèi)型轉(zhuǎn)換為?false?,但不等值于?false?:
document.writeln(!null);???????????????????????????????????//?輸出?true
document.writeln(!undefined);?????????????????????? ??//?輸出?true
document.writeln(null==false);????????????????????????//?輸出?false
document.writeln(undefined==false);??????????????//?輸出?false
?
?
7)????????????JScript?是一種區(qū)分大小寫(xiě)的語(yǔ)言,因此變量名稱(chēng)?blogjava?和變量名稱(chēng)?blogJava?是不一樣的
?
<?注?1>?:?undefined
?
undefined?屬性?Global?(?注?2)?對(duì)象的一個(gè)成員,該屬性在腳本引擎初始化后可用。
?
如果聲明了一個(gè)變量但沒(méi)有初始化,該變量的值就是?undefined?。
?
如果沒(méi)有聲明變量,那么就不能將其與?undefined?進(jìn)行比較,但是可以將該變量的類(lèi)型與字符串?"undefined"?進(jìn)行比較。
?
*****? undefined?應(yīng)用示例?*****
?
var declared;????????????????????????????????????//?聲明變量。
if (declared == undefined)????????????????//?測(cè)試變量。
??document.write("declared has not been initialized.");
?
if (typeOf(notDeclared) == "undefined")
??document.write("notDeclared has not been defined.");
?
<?注?2>?:?Global
?
Global?對(duì)象是一個(gè)固有對(duì)象?(?注?3)?,把所有全局方法集中在一個(gè)對(duì)象中。
?
Global?不能用?new?運(yùn)算符創(chuàng)建。它在?JScripting?引擎被初始化時(shí)創(chuàng)建,并立即使其方法和屬性可用。
?
***** Global?屬性?*****
?
1)????????Infinity?:返回?Number.POSITIVE_INFINITY?的初始值
???POSITIVE_INFINITY?屬性返回比在?JScript?中能夠表示的最大的數(shù)?(Number.MAX_VALUE)?更大的值。
???JScript?將?POSITIVE_INFINITY?值顯示為?infinity,?該值數(shù)學(xué)上的作用與正無(wú)窮相同。
?
?與之相對(duì),?NEGATIVE_INFINITY?屬性返回比?JScript?能夠表示的最小負(fù)數(shù)(?-Number.MAX_VALUE?)更小的值。
???JScript?將?NEGATIVE_INFINITY?值顯示為?-infinity,?該值數(shù)學(xué)上的作用與負(fù)無(wú)窮相同。
?可以看出?POSITIVE_INFINITY?和?NEGATIVE_INFINITY?都是?Number?對(duì)象的屬性,?Number?對(duì)象最主要的用途是將其屬性集中到一個(gè)對(duì)象中,以及使數(shù)字能夠通過(guò)?toString?方法轉(zhuǎn)換為字符串。
?
| Number?屬性 | Number?方法 |
| MAX_VALUE | toLocaleString |
| MIN_VALUE | |
| NaN | toString |
| NEGATIVE_INFINITY | |
| POSITIVE_INFINITY | valueOf |
| constructor | |
| prototype |
?
2)????????NaN?:返回特殊值?NaN?,表示表達(dá)式不是數(shù)字
?相關(guān)方法:?isNan( numValue )
??????????返回一個(gè)?Boolean?值,指明提供的值?(numValue)?是否是保留值?NaN (?不是數(shù)字?)?,即判斷是否為數(shù)字。
????????? 如果值是?NaN?,?那么?isNaN?函數(shù)返回?true?,否則返回?false?。
???????????使用這個(gè)函數(shù)的典型情況是檢查?parseInt?和?parseFloat?方法的返回值。
????????? 還有一種辦法,變量可以與它自身進(jìn)行比較。?如果比較的結(jié)果不等,那么它就是?NaN?。?這是因?yàn)?/span>?NaN?是唯一與自身不等的值。
?
***** Global?方法?*****
?
| Global 方法 | escape |
| eval | |
| isFinite | |
| isNaN | |
| parseFloat | |
| parseInt | |
| unescape |
?
<?注?3>?:?固有對(duì)象
?
固有對(duì)象是作為標(biāo)準(zhǔn)?JScript?語(yǔ)言一部分的一種對(duì)象。所有的腳本都可以使用這種對(duì)象。?JScript?中的固有對(duì)象:
| 固有對(duì)象 | |||
| Array | Boolean | Date | Function |
| Global | Math | Number | Object |
| RegExp | Regular | Expression | String |
??
3.?????強(qiáng)制轉(zhuǎn)換
在?Jscript?中,可以對(duì)不同類(lèi)型的值執(zhí)行運(yùn)算,?JScript?解釋器自動(dòng)將數(shù)據(jù)類(lèi)型之一改變?(?強(qiáng)制轉(zhuǎn)換?)?為另一種數(shù)據(jù)類(lèi)型,然后執(zhí)行運(yùn)算。
?
| 運(yùn)算 | 結(jié)果 |
| 數(shù)值與字符串相加 | 將數(shù)值強(qiáng)制轉(zhuǎn)換為字符串 |
| 布爾值與字符串相加 | 將布爾值強(qiáng)制轉(zhuǎn)換為字符串 |
| 數(shù)值與布爾值相加 | 將布爾值強(qiáng)制轉(zhuǎn)換為數(shù)值 |
?
?
*****?強(qiáng)制轉(zhuǎn)換示例?*****
var year = 2008;?????????????????//?一個(gè)數(shù)字
var hello = "Hello ";?????????????//?一個(gè)字符串
hello = hello + year;????????????//?將數(shù)字強(qiáng)制轉(zhuǎn)換為字符串
document.write(hello);????????//?輸出?Hello 2008
要想顯示的將字符串轉(zhuǎn)換為數(shù)字可使用方法?parseInt()?和?parseFloat()?。
4.?????JScript?的數(shù)據(jù)類(lèi)型
Jscript?有三種主要數(shù)據(jù)類(lèi)型、兩種復(fù)合數(shù)據(jù)類(lèi)型和兩種特殊數(shù)據(jù)類(lèi)型。
主要(基本)數(shù)據(jù)類(lèi)型:?
??????字符串
?????數(shù)值
?????布爾
復(fù)合(引用)數(shù)據(jù)類(lèi)型:?
???????對(duì)象?
???????數(shù)組
特殊數(shù)據(jù)類(lèi)型:?
???????Null?
???????Undefined?
1.????????字符串
1)????????字符串中可以包含雙引號(hào),該雙引號(hào)兩邊需加單引號(hào),
?字符串中可以包含單引號(hào),該單引號(hào)兩邊需加雙引號(hào)。
"I’m Ma Jia nan."
'"good good study, day day up", my teacher said.'
?
2)????????JScript?中沒(méi)有表示單個(gè)字符的類(lèi)型(如?C++?的?char?)。要表示?Jscript?中的單個(gè)字符,應(yīng)創(chuàng)建一個(gè)只包含一個(gè)字符的字符串。包含零個(gè)字符(?""?的字符串是空(零長(zhǎng)度)字符串
?
2.????????數(shù)值類(lèi)型
在?Jscript?中整數(shù)和浮點(diǎn)值沒(méi)有差別;?JScript?數(shù)值可以是其中任意一種(?JScript?內(nèi)部將所有的數(shù)值表示為浮點(diǎn)值)。
??????
1)????????整型
八進(jìn)制和十六進(jìn)制數(shù)可以為負(fù),但不能有小數(shù)位,同時(shí)不能以科學(xué)計(jì)數(shù)法(指數(shù))表示。
2)????????JScript?包含特殊值數(shù)字:?
NaN(?不是數(shù))。當(dāng)對(duì)不適當(dāng)?shù)臄?shù)據(jù)進(jìn)行數(shù)學(xué)運(yùn)算時(shí)使用,例如字符串或未定義值。?
正無(wú)窮大。在JScript中如果一個(gè)正數(shù)太大的話使用它來(lái)表示。?
負(fù)無(wú)窮大。在JScript中如果一個(gè)負(fù)數(shù)太大的話使用它來(lái)表示。?
正0和負(fù)0。Jscript區(qū)分正0和負(fù)0。?
3.????????boolean
任何值為?0?、?null?、未定義(undefined)或空字符串的表達(dá)式被解釋為false。其他任意值的表達(dá)式解釋為true
?
4.????????Null?數(shù)據(jù)類(lèi)型
1)????????在?Jscript?中數(shù)據(jù)類(lèi)型?null?只有一個(gè)值:?null?。關(guān)鍵字?null?不能用作函數(shù)或變量的名稱(chēng)。
2)????????包含?null?的變量包含?“?無(wú)值?”?或?“?無(wú)對(duì)象?”?。換句話說(shuō),該變量沒(méi)有保存有效的數(shù)、字符串、?boolean?、數(shù)組或?qū)ο蟆?/p>
3)????????Jscript?中,?null?與?0?不相等(與在?C?和?C++?中不同)。同時(shí)應(yīng)該指出的是,?Jscript?中?typeof?運(yùn)算符將報(bào)告?null?值為?Object?類(lèi)型,而非類(lèi)型?null?。這點(diǎn)潛在的混淆是為了向下兼容。
5.????????Undefined?數(shù)據(jù)類(lèi)型
如下情況使返回?undefined?值:
¨????????對(duì)象屬性不存在,
¨????????聲明了變量但從未賦值。
???注意不能通過(guò)與?undefined?做比較來(lái)測(cè)試一個(gè)變量是否存在,但可以檢查它的類(lèi)型是否為?“?undefined?”?。在以下的代碼范例中,假設(shè)程序員想測(cè)試是否已經(jīng)聲明變量?x?:
??????//方法不起作用?
??????if( x == undefined)
????????????//do sth
??????
???//方法不起作用,必須檢查字符串"undefined"
???if(typeof(x) == undefined)
??????// do sth
???//方法有效
???if(typeof(x) == "undefined")
??????//do sth
考慮將?undefined?值與?null?做比較。????????
someObject.prop == null;? ??
??如下情況時(shí),比較的結(jié)果為?true?:
?????? 如果屬性?someObject.prop?包含?null?值
???????如果屬性?someObject.prop?不存在
要檢查一個(gè)對(duì)象屬性是否存在,可以使用新的?in?(?注?4)?運(yùn)算符:?
if("prop" in someObject)
//someObject有屬性prop
<?注?4>?:?in?運(yùn)算符
result?=?propertyinobject
in?操作檢查對(duì)象中是否有名為?property?的屬性。?
?<to be continued ... ...>
本文轉(zhuǎn)自BlogJavaOo緣來(lái)是你oO的博客,原文鏈接:JavaScript 學(xué)習(xí)筆記(1),如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原博主。
總結(jié)
以上是生活随笔為你收集整理的JavaScript 学习笔记(1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: CF17E:Palisection——题
- 下一篇: gradle idea java ssm