標籤:浮點數 同名 報錯 定義 字串類型 返回 首碼和 整數 string
1、要查看一個變數的內容,在Console中輸入console.log(a);
,斷行符號後顯示的值就是變數的內容。
2、alert(‘我不想執行‘); //提示框Google瀏覽器可直接執行
3、JavaScript不區分整數和浮點數,統一用Number表示,以下都是合法的Number類型:
123; // 整數1230.456; // 浮點數0.4561.2345e3; // 科學計數法表示1.2345x1000,等同於1234.5-99; // 負數NaN; // NaN表示Not a Number,當無法計算結果時用NaN表示Infinity; // Infinity表示無限大,當數值超過了JavaScript的Number所能表示的最大值時,就表示為Infinity
電腦由於使用二進位,所以,有時候用十六進位表示整數比較方便,十六進位用0x首碼和0-9,a-f表示,例如:0xff00
,0xa5b4c3d2
,等等,它們和十進位表示的數值完全一樣。
注意%
是求餘運算。
4、字串
字串是以單引號‘或雙引號"括起來的任意文本,比如‘abc‘
,"xyz"
等等。請注意,‘‘
或""
本身只是一種表示方式,不是字串的一部分,因此,字串‘abc‘
只有a
,b
,c
這3個字元。
5、比較
實際上,JavaScript允許對任意資料類型做比較:
false == 0; // truefalse === 0; // false
要特別注意相等運算子==
。JavaScript在設計時,有兩種比較子:
第一種是==
比較,它會自動轉換資料類型再比較,很多時候,會得到非常詭異的結果;
第二種是===
比較,它不會自動轉換資料類型,如果資料類型不一致,返回false
,如果一致,再比較。
由於JavaScript這個設計缺陷,不要使用==
比較,始終堅持使用===
比較。
另一個例外是NaN
這個特殊的Number與所有其他值都不相等,包括它自己:
NaN === NaN; // false
唯一能判斷NaN
的方法是通過isNaN()
函數:
isNaN(NaN); // true
最後要注意浮點數的相等比較:
1 / 3 === (1 - 2 / 3); // false
這不是JavaScript的設計缺陷。浮點數在運算過程中會產生誤差,因為電腦無法精確表示無限迴圈小數。要比較兩個浮點數是否相等,只能計算它們之差的絕對值,看是否小於某個閾值:Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // tru
6、
數組
數組是一組按順序排列的集合,集合的每個值稱為元素。JavaScript的數組可以包括任意資料類型。
var arr = [1, 2, 3.14, ‘Hello‘, null, true];arr[0]; // 返回索引為0的元素,即1arr[5]; // 返回索引為5的元素,即truearr[6]; // 索引超出了範圍,返回undefined
7、對象
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
。
要擷取一個對象的屬性,我們用物件變數.屬性名稱
的方式:
person.name; // ‘Bob‘person.zipcode; // null
8、變數
變數的概念基本上和初中代數的方程變數是一致的,只是在電腦程式中,變數不僅可以是數字,還可以是任意資料類型。
變數在JavaScript中就是用一個變數名表示,變數名是大小寫英文、數字、$
和_
的組合,且不能用數字開頭。變數名也不能是JavaScript的關鍵字,如if
、while
等。申明一個變數用var
語句,比如:
var a; // 申明了變數a,此時a的值為undefinedvar $b = 1; // 申明了變數$b,同時給$b賦值,此時$b的值為1var s_007 = ‘007‘; // s_007是一個字串var Answer = true; // Answer是一個布爾值truevar t = null; // t的值是null
變數名也可以用中文,但是,請不要給自己找麻煩。
在JavaScript中,使用等號=
對變數進行賦值。可以把任意資料類型賦值給變數,同一個變數可以反覆賦值,而且可以是不同類型的變數,但是要注意只能用var
申明一次,例如:
var a = 123; // a的值是整數123a = ‘ABC‘; // a變為字串
這種變數本身類型不固定的語言稱之為動態語言,與之對應的是靜態語言。靜態語言在定義變數時必須指定變數類型,如果賦值的時候類型不符,就會報錯。例如Java是靜態語言,指派陳述式如下:
int a = 123; // a是整數類型變數,類型用int申明a = "ABC"; // 錯誤:不能把字串賦給整型變數
和靜態語言相比,動態語言更靈活,就是這個原因。
請不要把指派陳述式的等號等同於數學的等號。比如下面的代碼:
var x = 10;x = x + 2;
如果從數學上理解x = x + 2
那無論如何是不成立的,在程式中,指派陳述式先計算右側的運算式x + 2
,得到結果12
,再賦給變數x
。由於x
之前的值是10
,重新賦值後,x
的值變成12
。
9、strict模式
JavaScript在設計之初,為了方便初學者學習,並不強制要求用var
申明變數。這個設計錯誤帶來了嚴重的後果:如果一個變數沒有通過var
申明就被使用,那麼該變數就自動被申明為全域變數:
使用var
申明的變數則不是全域變數,它的範圍被限制在該變數被申明的函數體內(函數的概念將稍後講解),同名變數在不同的函數體內互不衝突。
為了修補JavaScript這一嚴重設計缺陷,ECMA在後續規範中推出了strict模式,在strict模式下啟動並執行JavaScript代碼,強制通過var
申明變數,未使用var
申明變數就使用的,將導致運行錯誤。
啟用strict模式的方法是在JavaScript代碼的第一行寫上:
‘use strict‘;
10、討論區補充://此處要在實戰中弄明白let,因為我沒用過
const 常量 let 變數,塊範圍,不能重複聲明覆蓋 var 變數,函數範圍,能重複聲明覆蓋
賦值之後不會再做修改了就用const,如果後邊還會修改就用let,不建議使用var
javaScript——廖雪峰老師學習筆記(一)