国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

資料類型和變數(shù)

資料型別

電腦顧名思義就是可以做數(shù)學(xué)計算的機器,因此,電腦程式理所當(dāng)然地可以處理各種數(shù)值。但是,電腦能處理的遠不止數(shù)值,還可以處理文字、圖形、音訊、視訊、網(wǎng)頁等各種各樣的數(shù)據(jù),不同的數(shù)據(jù),需要定義不同的數(shù)據(jù)類型。在JavaScript中定義了以下幾種資料型別:

Number

#JavaScript不區(qū)分整數(shù)與浮點數(shù),統(tǒng)一以Number表示,以下都是合法的Number型:

123; // 整數(shù)1230.456; // 浮點數(shù)0.4561.2345e3; // 科學(xué)計數(shù)法表示1.2345x1000,等同於1234.5-99; // 負數(shù)NaN; // NaN表示Not a Number,當(dāng)無法計算結(jié)果時用NaN表示Infinity; // Infinity表示無限大,當(dāng)數(shù)值超過了JavaScript的Number所能表示的最大值時,就表示為Infinity

計算機由於使用二進制,所以,有時候用十六進位表示整數(shù)比較方便,十六進位用0x前綴和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等,它們和十進位表示的數(shù)值完全一樣。

Number可以直接做四則運算,規(guī)則和數(shù)學(xué)一致:

1 + 2; // 3(1 + 2) * 5 / 2; // 7.52 / 0; // Infinity0 / 0; // NaN10 % 3; // 110.5 % 3; // 1.5

注意%是求餘運算。

字串

字串是以單引號'或雙引號」括起來的任意文本,例如'abc',"xyz"等等。請注意,''或""本身只是一種表示方式,不是字串的一部分,因此,字串'abc'只有a,b,c這3個字元。

#布林值和布林代數(shù)的表示完全一致,一個布林值只有true、false兩種值,要嘛是true,要嘛是false,可以直接用true、false表示布林值,也可以透過布爾運算計算出來:true; // 這是一個true值false; // 這是一個false值2 > 1; // 這是一個true值2 >= 3; // 這是一個false值

&&運算是與運算,只有所有都為true,&&運算結(jié)果才是true:


true && true; // 這個&&語句計算結(jié)果為truetrue && false; // 這個&&語句計算結(jié)果為falsefalse && true && false; // 這個&&語句計算結(jié)果為false

||運算是或運算,只要其中有一個為true,| |運算結(jié)果就是true:


false || false; // 這個||語句計算結(jié)果為falsetrue || false; // 這個||語句計算結(jié)果為truefalse || true || false; //這個||語句計算結(jié)果為true

!運算是非運算,它是一個單目運算符,把true變成false,false變成true:

! true; // 結(jié)果為false! false; // 結(jié)果為true! (2 > 5); // 結(jié)果為true

布林值常用在條件判斷中,例如:

var age = 15;if (age >= 18) {
    alert('adult');
} else {
    alert('teenager');
}

比較運算子

當(dāng)我們對Number做比較時,可以透過比較運算子得到一個布林值:

2 > 5; // false5 >= 2; // true7 == 7; // true

實際上,JavaScript允許對任意資料型別做比較:

false == 0; // truefalse === 0; // false

要特別注意相等運算??子==。 JavaScript在設(shè)計時,有兩種比較運算子:

第一種是==比較,它會自動轉(zhuǎn)換資料型別再比較,很多時候,會得到非常詭異的結(jié)果;

#第二種是===比較,它不會自動轉(zhuǎn)換資料型,如果資料型別不一致,回傳false,如果一致,再比較。

由於JavaScript這個設(shè)計缺陷,不要使用==比較,始終堅持使用===比較。

另一個例外是NaN這個特殊的Number與所有其他值都不相等,包括它自己:

NaN === NaN; // false

唯一能判斷NaN的方法是透過isNaN()函數(shù):

isNaN(NaN); // true

最後要注意浮點數(shù)的相等比較:

1 / 3 === (1 - 2 / 3); // false

這不是JavaScript的設(shè)計缺陷。浮點數(shù)在運算過程中會產(chǎn)生誤差,因為計算機無法精確表示無限循環(huán)小數(shù)。要比較兩個浮點數(shù)是否相等,只能計算它們之差的絕對值,看是否小於某個閾值:

Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true

null和undefined

null表示一個「空」的值,它和0以及空字串''不同,0是一個數(shù)值,''表示長度為0的字串,而null表示“空”。

在其他語言中,也有類似JavaScript的null的表示,例如Java也用null,Swift用nil,Python用None表示。但是,在JavaScript中,還有一個和null類似的undefined,它表示「未定義」。

JavaScript的設(shè)計者希望用null表示一個空的值,而undefined表示值未定義。事實證明,這並沒有什麼卵用,區(qū)分兩者的意義不大。大多數(shù)情況下,我們都應(yīng)該用null。 undefined僅在判斷函數(shù)參數(shù)是否傳遞的情況下有用。

陣列

陣列是一組依序排列的集合,集合的每個值稱為元素。 JavaScript的陣列可以包括任意資料型別。例如:

[1, 2, 3.14, 'Hello', null, true];

上述陣列包含6個元素。數(shù)組用[]表示,元素之間用,分隔。

另一種建立陣列的方法是透過Array()函數(shù)實作:

new Array(1, 2, 3); // 建立了陣列[1, 2, 3]

然而,出於程式碼的可讀性考慮,強烈建議直接使用[]。

陣列的元素可以透過索引來存取。請注意,索引的起始值為0:

var arr = [1, 2, 3.14, 'Hello', null, true];
arr[0]; // 返回索引為0的元素,即1arr[5]; // 返回索引為5的元素,即truearr[6]; // 索引超出了范圍,返回undefined

物件

#JavaScript的物件是一組由鍵-值組成的無序集合,例如:

var person = {
    name: 'Bob',
    age: 20,
    tags: ['js', 'web', 'mobile'],
    city: 'Beijing',
    hasCar: true,
    zipcode: null};

JavaScript物件的鍵都是字串類型,值可以是任意資料類型。上述person物件一共定義了6個鍵值對,其中每個鍵又稱為物件的屬性,例如,person的name屬性為'Bob',zipcode屬性為null。

要取得一個物件的屬性,我們用物件變數(shù).屬性名稱的方式:

person.name; // 'Bob'person.zipcode; // null

變數(shù)

變數(shù)的概念基本上和初中代數(shù)的方程式變數(shù)是一致的,只是在電腦程式中,變數(shù)不僅可以是數(shù)字,還可以是任意資料類型。

變數(shù)在JavaScript中就是用一個變數(shù)名稱表示,變數(shù)名稱是大小寫英文、數(shù)字、$和_的組合,不能用數(shù)字開頭。變數(shù)名也不能是JavaScript的關(guān)鍵字,如if、while等。申明一個變數(shù)用var語句,例如:

var a; // 申明了變數(shù)a,此時a的值為undefinedvar $b = 1; // 申明了變數(shù)$b,同時給$b賦值,此時$b的值為1var s_007 = '007'; // s_007是一個字串var Answer = true; // Answer是一個布林值truevar t = null; // t的值是null

變數(shù)名稱也可以用中文,但是,請不要給自己找麻煩。

在JavaScript中,使用等號=對變數(shù)進行賦值??梢园讶我赓Y料型別賦值給變量,同一個變數(shù)可以重複賦值,而且可以是不同型別的變量,但是要注意只能用var申明一次,例如:

var a = 123; // a的值是整數(shù)123a = 'ABC'; // a變?yōu)樽址?/pre>

這種變數(shù)本身型別固定的語言稱之為動態(tài)語言,與之對應(yīng)的是靜態(tài)語言。靜態(tài)語言在定義變數(shù)時必須指定變數(shù)類型,如果賦值的時候類型不匹配,就會報錯。例如Java是靜態(tài)語言,賦值語句如下:

int a = 123; // a是整數(shù)型別變量,型別用int申明a = "ABC"; // 錯誤:不能把字串賦給整型變數(shù)

和靜態(tài)語言相比,動態(tài)語言更靈活,就是這個原因。

請不要把賦值語句的等號等同於數(shù)學(xué)的等號。例如下面的程式碼:

var x = 10;
x = x + 2;

如果從數(shù)學(xué)上理解x = x + 2那無論如何是不成立的,在程式中,賦值語句先計算右邊的表達式x + 2,得到結(jié)果12,再賦給變數(shù)x。由於x之前的值是10,重新賦值後,x的值變成12。

strict模式

JavaScript在設(shè)計之初,為了方便初學(xué)者學(xué)習(xí),並沒有強制要求用var申明變數(shù)。這個設(shè)計錯誤帶來了嚴重的後果:如果一個變數(shù)沒有通過var申明就被使用,那麼該變數(shù)就自動被申明為全域變數(shù):

i = 10; // i現(xiàn)在是全局變量

在同一個頁面的不同的JavaScript檔案中,如果都不用var申明,剛好都使用了變數(shù)i,將造成變數(shù)i互相影響,產(chǎn)生難以調(diào)試的錯誤結(jié)果。

使用var申明的變數(shù)則不是全域變量,它的範(fàn)圍被限制在該變數(shù)被申明的函數(shù)體內(nèi)(函數(shù)的概念將稍後講解),同名變數(shù)在不同的函數(shù)體內(nèi)互不衝突。

為了修補JavaScript這一嚴重設(shè)計缺陷,ECMA在後續(xù)規(guī)範(fàn)中推出了strict模式,在strict模式下運行的JavaScript程式碼,強制通過var申明變量,未使用var申明變量就使用的,將導(dǎo)致運行錯誤。

啟用strict模式的方法是在JavaScript程式碼的第一行寫入:

'use strict';

這是一個字串,不支援strict模式的瀏覽器會把它當(dāng)作一個字串語句執(zhí)行,支援strict模式的瀏覽器會開啟strict模式運行JavaScript。

來測試你的瀏覽器是否能支援strict模式:

'use strict';
// 如果瀏覽器支援strict模式,
// 下面的程式碼將報ReferenceError錯誤:

abc = 'Hello, world';
alert(abc);
<html>
<head>
 <script>
 var age = 15;
 if (age >= 18) {
 alert('adult');
 } else {
 alert('teenager');
 }
 </script>
</head>
<body>
</body>
</html>


#
繼續(xù)學(xué)習(xí)
||
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title> RunJS 演示代碼 </title> <script> var ck = function(){ var x = prompt ("輸入數(shù)據(jù): ", ""); alert(x); } </script> </head> <body> <button onclick="ck();"> 按鈕 </button> </body> </html>