亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JavaScript學習小結(一)――JavaScript入門基礎

2019-11-20 11:37:21
字體:
來源:轉載
供稿:網友

一、JavaScript語言特點

1.1、JavaScript是基于對象和事件驅動的(動態的)

  它可以直接對用戶或客戶輸入做出響應,無須經過Web服務程序。它對用戶的響應,是采用以事件驅動的方式進行的。所謂事件驅動,就是指在主頁中執行了某種操作所產生的動作,就稱為“事件”。比如按下鼠標,移動窗口,選擇菜單等都可以視為事件。當事件發生后,可能會引起相應的事件響應。

1.2、JavaScript是跨平臺的

  JavaScript是依賴于瀏覽器本身的,與操作系統無關。

二、JavaScript變量

2.1、定義變量

  在定義變量時,統一使用"var 變量名"表示,例如:var str;甚至可以省略var這個關鍵字

2.2、JavaScript變量的類型如何決定

  JavaScript中變量的數據類型是由JS引擎決定的

 var name="孤傲蒼狼";//name是string類型 var age=;//age是number類型 var flag=true;//flag是boolean類型 var email;//email只是聲明,沒有賦值,因此代表的類型是"undefined",也就是無法確定 name=;//name自動變成了number類型

2.3、使用typeof關鍵字查看變量代表的具體數據類型

  typeof 運算符有一個參數,即要檢查的變量或值。例如:

 var sTemp = "test string"; alert (typeof sTemp);  //輸出 "string" alert (typeof );  //輸出 "number"

對變量或值調用typeof運算符將返回下列值之一:

undefined - 如果變量是 Undefined 類型的

boolean - 如果變量是 Boolean 類型的

number - 如果變量是 Number 類型的

string - 如果變量是 String 類型的

object - 如果變量是一種引用類型或 Null 類型的

測試代碼:

<script type="text/javascript">   var name="孤傲蒼狼";//name是string類型   alert("name是"+typeof name+"類型");   var age=;//age是number類型   alert("age是"+typeof age+"類型");   var flag=true;//flag是boolean類型   alert("flag的類型是:"+typeof flag);   name=;//name自動變成了number類型   alert("name變量重新賦值后,name的數據類型變成了:"+typeof name);   var email;//email只是聲明,沒有賦值,因此代表的類型是"undefined",也就是無法確定   alert("email的類型是:"+typeof email );   var a=null; /* 為什么 typeof 運算符對于 null 值會返回 "Object"。 這實際上是 JavaScript 最初實現中的一個錯誤,然后被 ECMAScript 沿用了?,F在,null 被認為是對象的占位符,從而解釋了這一矛盾,但從技術上來說,它仍然是原始值。 */   alert("a是"+typeof a +"類型");  </script>

運行結果:

 三、JavaScript數據類型

  

  JavaScript包含兩種不同數據類型:基本數據類型和引用數據類型?;绢愋椭傅氖呛唵蔚臄祿妙愋椭赣啥鄠€值構成的對象。當我們把值賦值給一個變量時,解析器首先要做的就是確認這個值是基本類型值還是引用類型值。

3.1、基本數據類型

  常見的五種基本數據類型:

Boolean
Number
String
Undifined
Null  

這五種基本數據類型可以直接操作保存在變量中的實際值。

3.1.1、數值類型(Number)和布爾類型(Boolean)

  看下面的代碼:

 <script type="text/javascript">   var a = ;   var b = a;     b = ;   alert("a="+a);//打印a=      var b = true;   var b = b;     b = false;   alert("b="+b);//打印b=true </script>

 運行結果:

  從運行結果可以看出,b的值是a值的一份拷貝,雖然,兩個變量的值是相等,但是兩個變量保存兩不同的基本數據類型值。b只是保存了a復制的一個副本。所以,當b的值改變成20時,a的值依然是10。兩個Boolean變量b1和b2同樣是基本數據類型,同樣保存兩個不同的基本數據據類型值,b2保存1復制的一個副本。所以,當b2的值改變成false時,b1的值依然是true。

下圖演示了這種基本數據類型賦值的過程:

棧內存

 

3.1.2、字符串類型(String)

  JavaScript中的字符串String一個特殊的基本數據類型,在很多語言中,String是以對象的形式表示的,但在JavaScript里,String是當作一種基本數據類型,是通值傳遞的方式來操作。但它是一個比較特殊的基本類型。

看下面例子:

<script type="text/javascript">   var strA = "這是字符串";   var strB = strA;     strA = "這是另外一個字符串";     alert("strB="+strB); </script>

運行結果:

  

  從運行結果可以看到,仿佛strA通過值傳遞的方式復制了一份給了strB。當strA改變的時候,strB并沒有改變,似乎我們已經可以下結論,String就是個基本數據類型。

可是,因為String是可以任意長度的,通過值傳遞,一個一個的復制字節顯示效率依然很低,看起來String也可以當作引用類型。

看下面例子:

 var a = "myobject"; a.name = "myname";//為字符串a動態添加name屬性 alert("a.name="+a.name); //訪問a的name屬性,

結果顯示:a.name=undefined

運行結果:

  

  運行結果顯示,String無法當作一個對象來處理。這也證明了一點:基本類型雖然也可以添加屬性,也不會報錯,經測試添加完之后卻是無法訪問的,實際上,javascript里的String是不可以改變的,javascript也沒有提供任何一個改變字符串的方法和語法。

看下面的例子:

 var b = "myobject"; b = b.substring(,); alert("b="+b); // b=bj

運行結果:

  

  這樣做,沒并有改變String字符串"myobject",只b引用了另一個字符串"bj","myobject"被回收了。

  所以可以這樣講,String實際上并不符合上面兩種數據類型分類。它是具有兩方面屬性介于兩都之間的一種特殊類型。

3.1.3、Null 類型

  Null類型只有一個專用值 null,值 undefined 實際上是從值 null 派生來的,因此 ECMAScript 把它們定義為相等的。

  <script type="text/javascript">    alert("null == undefined的結果是:"+(null == undefined)); //輸出 "true"  </script>

運行結果:

  

  盡管這兩個值相等,但它們的含義不同。undefined 是聲明了變量但未對其初始化時賦予該變量的值,null 則用于表示尚未存在的對象(typeof 運算符對于 null 值會返回 "Object"。)。如果函數或方法要返回的是對象,那么找不到該對象時,返回的通常是 null。

3.1.4、Undefined 類型

  Undefined 類型只有一個值,即 undefined。當聲明的變量未初始化時,該變量的默認值是 undefined。

var oTemp;

  前面一行代碼聲明變量 oTemp,沒有初始值。該變量將被賦予值 undefined,即 undefined 類型的字面量??梢杂孟旅娴拇a段測試該變量的值是否等于 undefined:

 <script type="text/javascript">   var oTemp;   alert("oTemp == undefined的結果是:"+(oTemp == undefined));//輸出 "true"  </script>

運行結果:

  

  運行結果顯示 "true",說明這兩個值確實相等。

  可以用 typeof 運算符顯示該變量所代表的的數據類型是undefined類型

 <script type="text/javascript">   var oTemp;   alert("typeof oTemp的結果是:"+typeof oTemp); //輸出 "undefined"  </script>

  值 undefined 并不同于未定義的值。但是,typeof 運算符并不真正區分這兩種值。考慮下面的代碼:

 <script type="text/javascript">   var oTemp;   alert("oTemp變量有聲明,typeof oTemp的結果是:"+typeof oTemp); //輸出 "undefined"   alert("oTemp變量沒有聲明,typeof oTemp的結果是:"+typeof oTemp); //輸出 "undefined"  </script>

運行結果:

  兩個變量輸出的都是 "undefined",即使只有變量 oTemp2 從未被聲明過。如果對oTemp2 使用除 typeof 之外的其他運算符的話,會引起錯誤,因為其他運算符只能用于已聲明的變量上。

  下面的代碼將引發錯誤:

var oTemp; alert(oTemp == undefined);//'oTemp' 未定義

  當函數無明確返回值時,返回的也是值 "undefined",如下所示:

function testFunc() {    //這是一個空函數,沒有返回值 } alert("testFunc() == undefined的結果是:"+(testFunc() == undefined)); //輸出 "true"

運行結果:

  

3.2、引用數據類型

  javascript引用數據類型是保存在堆內存中的對象,JavaScript不允許直接訪問堆內存空間中的位置和操作堆內存空間,只能通過操作對象在棧內存中的引用地址。所以引用類型的數據,在棧內存中保存的實際上是對象在堆內存中的引用地址。通過這個引用地址可以快速查找到保存在堆內存中的對象。

看下面的例子:

 <script type="text/javascript">   var obj = new Object();   var obj = obj;   obj.name = "孤傲蒼狼";   alert(obj.name); // 孤傲蒼狼 </script>

運行結果:

  

  由上面例子,我們聲明了一個引用數據類型變量obj1,并把它賦值給了另外一個引用數據類型變量obj2。當我們obj2添加了一個name屬性并賦值" 孤傲蒼狼"。obj1同樣擁有了和obj2一樣的name屬性。說明這兩個引用數據類型變量指向同一個對象。obj1賦值給obj2,實際只是把這個對象在棧內存的引用地址復制了一份給了obj2,但它們本質上共同指向了堆內存中的同一個對象。

下面我們來演示這個引用數據類型賦值過程

    

自然,給obj2添加name屬性,實際上是給堆內存中的對象添加了name屬性,obj2和obj1在棧內存中保存的只是堆內存對象的引用地址,雖然也是拷貝了一份,但指向的對象卻是同一個。故而改變obj2引起了obj1的改變。

  一般而言,基本數據類型是由固定數目的字節組成,這些字節可以在解析器的較底層進行操作,比如Number和 Boolean;而引用數據類型,可以包含任意數目的屬性和元素,因此它們無法像基本數據類型那樣很容易的操作。

由于,引用數據類型的值是會發生變化的, 所以通過跟基本數據類型一樣的值傳遞方式,也就沒什么意義了,因為會牽涉到大量的內存的復制和比較,效率太低。所以引用數據類型是通過引用傳遞方式,實際傳遞的只是對象的一個地址。

比如Array和Function,因為它們都是特殊的對象所以它們都是引用類型。另外,引用類型是可以添加屬性,基本類型雖然也可以添加屬性,也不會報錯,經測試添加完之后卻是無法訪問的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人自拍视频| 亚洲欧美日韩国产精品| 日韩在线观看免费网站| 中文字幕精品网| 国产mv久久久| 日韩av电影在线免费播放| 成人精品视频99在线观看免费| 亚洲天堂成人在线| 久久97久久97精品免视看| 中文字幕亚洲综合| 欧美激情在线有限公司| 成人免费在线网址| 久久99视频免费| 亚洲免费视频观看| 欧美性极品少妇精品网站| 国产亚洲欧美一区| 国产午夜一区二区| 午夜精品视频网站| 亚洲一区二区精品| 这里只有精品视频| 国产精品网红直播| 亚洲一级免费视频| 欧美精品久久久久久久久| 亚洲国产婷婷香蕉久久久久久| 国产午夜精品美女视频明星a级| 亚洲天天在线日亚洲洲精| 综合欧美国产视频二区| www.xxxx欧美| 17婷婷久久www| 日韩精品高清在线观看| 精品丝袜一区二区三区| 国产精品成人一区二区| 精品香蕉一区二区三区| 欧美日韩免费看| 91在线免费观看网站| 最近2019中文字幕第三页视频| 欧美激情二区三区| 色小说视频一区| 成人黄色生活片| 久久久精品国产网站| 91精品国产99久久久久久| yw.139尤物在线精品视频| 搡老女人一区二区三区视频tv| 国产有码一区二区| 欧美午夜精品久久久久久久| 国产成人精品优优av| 日韩精品在线观看一区| 2019中文字幕在线免费观看| 亚洲高清一二三区| 91亚洲精品一区| 日韩亚洲欧美中文高清在线| 日韩久久精品成人| 国产精品成人一区| 国产区亚洲区欧美区| 国产成人一区二区三区| 欧美孕妇孕交黑巨大网站| 97久久久久久| 久久国产天堂福利天堂| 日韩av123| 日韩理论片久久| 亚洲人成伊人成综合网久久久| 精品国产鲁一鲁一区二区张丽| 亚洲a中文字幕| 国产aaa精品| 午夜精品三级视频福利| 成人av资源在线播放| 日本电影亚洲天堂| 美乳少妇欧美精品| 亚洲午夜女主播在线直播| 国产精品99蜜臀久久不卡二区| 欧美成人激情视频免费观看| 欧洲美女免费图片一区| 欧美大片第1页| 日韩午夜在线视频| 国产伦精品一区二区三区精品视频| 久久男人的天堂| 成人性生交大片免费观看嘿嘿视频| 亚洲成avwww人| 欧美日韩性视频在线| 欧美老肥婆性猛交视频| 亚洲免费人成在线视频观看| 亚洲第一国产精品| 亚洲图片在区色| 51午夜精品视频| 国产精品入口夜色视频大尺度| 性色av一区二区三区免费| 91亚洲国产成人久久精品网站| 日韩精品欧美国产精品忘忧草| 欧美裸体xxxx极品少妇| 亚洲精品动漫100p| 日韩国产激情在线| 中文字幕综合一区| 亚洲成年人在线播放| 亚洲国产福利在线| 国产精品91在线| 欧美日韩亚洲国产一区| 这里只有精品丝袜| 日韩精品免费在线观看| 欧美三级欧美成人高清www| 国产精品久久久久福利| 成人做爰www免费看视频网站| 亚洲最大的网站| 国产中文字幕91| 在线视频欧美日韩精品| 97**国产露脸精品国产| 国产成人亚洲综合91精品| 久久99热这里只有精品国产| 欧美日韩国产综合新一区| 欧美中文字幕视频在线观看| 91欧美精品午夜性色福利在线| 色阁综合伊人av| 欧美日本中文字幕| 久久777国产线看观看精品| 久久久人成影片一区二区三区观看| 自拍视频国产精品| 成人久久精品视频| 欧美猛交ⅹxxx乱大交视频| 欧美性视频网站| 亚洲欧洲中文天堂| 亚洲日韩中文字幕在线播放| 亚洲人成电影网站色…| 91经典在线视频| 一区二区三区视频在线| 久久久免费精品视频| 国产精品青草久久久久福利99| 国产午夜精品美女视频明星a级| 亚洲成年网站在线观看| 日韩欧美精品网站| 亚洲桃花岛网站| 久久久99久久精品女同性| 在线观看日韩欧美| 国产精品日韩久久久久| 国产精品国产亚洲伊人久久| 国产一区二区在线免费| 国产欧美一区二区白浆黑人| 国产精品美女在线观看| 欧美高清在线视频观看不卡| 欧美影院在线播放| 国产精品福利网| 国产成人精品综合| 国产一区二区三区在线观看视频| 久久夜精品香蕉| 久久久久久12| 久久在线视频在线| 国产精品777| 日韩理论片久久| 欧美日韩国产麻豆| 国产精品自产拍在线观看中文| 欧美人成在线视频| 久久精品一本久久99精品| 亚洲国产成人91精品| 日韩欧美aⅴ综合网站发布| 亚洲精品在线观看www| 国产精品成av人在线视午夜片| 在线视频一区二区| 日韩欧美中文第一页| 精品国产91久久久久久| 国产精品视频公开费视频| 草民午夜欧美限制a级福利片| 亚洲第一网站男人都懂| 欧美视频在线观看免费| 日韩精品中文字幕在线播放| 在线观看国产精品日韩av| 538国产精品一区二区在线|