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