簡介
什麼是JavaScript?
JavaScript ( JS ) 是一種具有函式優先的輕量級,解釋型或即時編譯型的程式語言。
函式優先:程式語言中的函式可以被當作引數傳遞給其他函式,可以作為另一個函式的返回值,還可以被賦值給一個變數。
解釋型:對標編譯型語言,編譯型需預先將原始碼編成中間碼,再由直譯器解釋執行。解釋型不需要預先編譯,在程式在執行時才由直譯器翻譯執行。
JavaScript 的標準是ECMAScript截至 2012 年,所有的現代瀏覽器都完整的支援 ECMAScript 5.1,舊版本的瀏覽器至少支援 ECMAScript 3 標準。
我們所熟知的ES6是在2015年6月17日,由ECMA國際組織釋出的ECMAScript 的第六版,該版本正式名稱為 ECMAScript 2015。
https://developer.mozilla.org...
使用場景
網際網路的興起,JavaScript的使用範圍已經超出了瀏覽器。
- 瀏覽器平臺。HTML5的出現,瀏覽器本身的功能越來越強,JavaScript 因此得以呼叫許多系統功能,如操作本地檔案、操作圖片、呼叫攝像頭和麥克風,可以開發更多富客戶端產品。
- 服務端應用。node的出現使得 JavaScript 可以用於開發伺服器端應用,也使得JavaScript成為一門可以同時開發前後端的語言。
- 移動應用。js也正在成為手機應用的開發語言,比如:React Native 專案則是將 JavaScript 寫的元件,編譯成原生元件。
- 桌面應用。JavaScript甚至可以開發桌面應用,比如electronjs。
- 資料庫操作。在一些Nosql資料都是支援JavaScript作為操作語言,像mongodb。
基本語法
變數
變數是對值的引用,JavaScript 的變數名區分大小寫,A
和a
是兩個不同的變數。
var total; // 未賦值的變數是 undefined,它是個特殊的值,表示無定義。
total = 1;
var a,b; // 一個var後可以宣告多個變數。
變數提升
你可能很奇怪,執行下面程式碼沒有報錯。由於JavaScript引擎工作方式是先解析程式碼,獲取所有被宣告的變數,換句話說就是所有的變數的宣告語句,都被提升到程式碼的頭部。
console.log(a);
var a = 1;
變數規則
- 第一個字元任意 Unicode 字母(包括英文字母和其他語言的字母),以及美元符號(
$
)和下劃線(_
) - 第二個字元及後面的字元,除了 Unicode 字母、美元符號和下劃線,還可以用數字
0-9
。
另外中文也可以宣告變數,下面保留字除外
arguments、break、case、catch、class、const、continue、debugger、default、delete、do、else、enum、eval、export、extends、false、finally、for、function、if、implements、import、in、instanceof、interface、let、new、null、package、private、protected、public、return、static、super、switch、this、throw、true、try、typeof、var、void、while、with、yield。
語句
JavaScript程式的執行單位行,一般情況一行就是一條語句,如果一行要寫多個語句我們使用;
表示語句結束。
var total = 1 + 1; // 宣告瞭一個變數total,然後將1+1的運算結果賦值給它。
註釋
// 這是單行註釋
/*
這是
多行
註釋
*/
區塊
JavaScript使用大括號將多條語句包裹起來表示一個區塊,注意var
宣告的變數不構成單獨的作用域,這裡區別於java。
{
var a = 1;
}
a // 1
條件語句
// if結構
if (m === 1){ // 往往由一個條件表示式產生的
console.log('ok')
}
// 或者
if (bool) console.log('ok');
// if/else結構
if (m === 1){
語句;
}else{
語句;
}
// if/else if.../else 結構 m==1 m==2 其它
if (m === 1) {
} else if(m === 2){
}else {
}
switch 結構
switch (m) {
case 1:
// ...
break;
case 2:
// ...
break;
default:
// ...
}
注意區別 ==與===
使用==比較兩個變數時,會發生隱式型別轉換,例如,自動將字串型別轉換為數字型別。
為了避免隱式轉換帶來的問題,我們都是用=== 進行嚴格進行比較。
三元運算子
三元運算子也可以用於邏輯判斷。
(條件) ? 表示式1 : 表示式2
迴圈語句
var i = 0;
while (i < 100) {
console.log('i 當前為:' + i);
i = i + 1;
}
// 區別上面,它至少會執行一次
var i = 0;
do {
console.log('i 當前為:' + i);
} while (i < 100);
for迴圈語句
- 初始化表示式:確定迴圈變數的初始值,只在迴圈開始時執行一次。
- 條件表示式:每輪迴圈開始時,都要執行這個條件表示式,只有值為真,才繼續進行迴圈。
- 遞增表示式:每輪迴圈的最後一個操作,通常用來遞增迴圈變數。
for (初始化表示式; 條件; 遞增表示式) {
語句
}
break 和 continue
break
語句用於跳出程式碼塊或迴圈,continue
是結束當前迴圈,跳到下一次。
資料型別
null和undefined
● 變數沒有初始化:undefined。
● 變數不可用:null。
數值
整數和浮點數,JavaScript 內部,所有數字都是以64位浮點數形式儲存,即使整數也是如此。
1 === 1.0 // true
數值精度:根據國際標準 IEEE 754,JavaScript 浮點數的64個二進位制位,從最左邊開始,是這樣組成的。
- 第1位:符號位,
0
表示正數,1
表示負數 - 第2位到第12位(共11位):指數部分
- 第13位到第64位(共52位):小數部分(即有效數字)
數值範圍:64位浮點數的指數部分的長度是11個二進位制位,意味著指數部分的最大值是2047(2的11次方減1)超出的範圍不能表示。
數值進位制:
- 十進位制:沒有前導0的數值。
- 八進位制:有字首
0o
或0O
的數值,或者有前導0、且只用到0-7的八個阿拉伯數字的數值。 - 十六進位制:有字首
0x
或0X
的數值。 - 二進位制:有字首
0b
或0B
的數值。
NaN
NaN
是 JavaScript 的特殊值,表示“非數字”(Not a Number),主要出現在將字串解析成數字出錯的場合。
字串
由單雙引號包裹在一起的字元,就是字串。
單引號字串的內部,可以使用雙引號。雙引號字串的內部,可以使用單引號。
'abc' "abc" "'a'" // 字串
// 字串換行
var str = 'String \
String \
String';
轉義符:
\0
:null(\u0000
)\b
:後退鍵(\u0008
)\f
:換頁符(\u000C
)\n
:換行符(\u000A
)\r
:Enter鍵(\u000D
)\t
:製表符(\u0009
)\v
:垂直製表符(\u000B
)\'
:單引號(\u0027
)\"
:雙引號(\u0022
)\\
:反斜槓(\u005C
)
字符集:javaScript 使用 Unicode 字符集。JavaScript 引擎內部,所有字元都用 Unicode 表示。
物件
var obj = { // 物件宣告
a: '1',
b: '2'
};
// 物件屬性讀取
obj.a
obj['a']
// 刪除物件屬性
delete obj.a
// 判斷屬性是否存在
'a' in obj
//物件遍歷
for (var i in obj) {
console.log('鍵名:', i);
console.log('鍵值:', obj[i]);
}
函式
function 關鍵字宣告。
function foo(s) {
console.log(s);
}
// 表示式形式
var foo = function(s) {
console.log(s);
};
Function 建構函式
var add = new Function(
'x',
'y',
'return x + y'
);
// 等同於
function add(x, y) {
return x + y;
}
函式名提升:JavaScript 引擎將函式名視同變數名,所以採用function
命令宣告函式時,整個函式會像變數宣告一樣,被提升到程式碼頭部。
foo();
function foo() {console('ok')}
JavaScript函式知識點還是蠻多的,後面針對函式這一塊單獨整理。
陣列
陣列屬於一種特殊的物件。
typeof [1, 2, 3] // "object"
length:JavaScript 使用一個32位整數,儲存陣列的元素個數。這意味著,陣列成員最多隻有 4294967295 個(2^32 - 1)個,也就是說length
屬性的最大值就是 4294967295。
陣列遍歷
var a = [1, 2, 3];
for (var i in a) {
console.log(a[i]);
}
小結
本文要點回顧,歡迎留言交流。
- JavaScript介紹。
- JavaScript基本語法。
- 資料型別。