1. 程式人生 > >JavaScript語法基礎(1)

JavaScript語法基礎(1)

返回 導致 順序結構 ava 含義 tex 其他 自動 color

1、JavaScript是什麽?

1)定義:

JavaScript「JS」是一種高級的、動態的、
弱類型的、解釋型的計算機編程腳本語言。

2)原理:

3)組成:

3大部分:

◆ ECMAScript: JS的語法核心

◆ DOM: Document Object Model;
文檔對象模型;
提供訪問和操作網頁的方法和接口

◆ BOM: Browser Object Model;
瀏覽器對象模型;
提供與瀏覽器交互的方法和接口

4)總結:

JS是一種專門為網頁交互而設計的、
簡單而又復雜的腳本程序語言。

2、JS的發展簡史是怎樣的?

● 慢速的網絡 + 表單提交 + 服務器驗證 = 糟糕的體驗;

● 1995年,Netscape「網景公司」,LiveScript;

● 為了跟風,更名為了JavaScript;

● "瀏覽器大戰"時期,IE <=> Netscape Navigator;

● 由於語法和特性上沒有標準化,
不同公司的瀏覽器實現不一樣,
導致JS出現了一定程度的混亂;

● 歐洲計算機制造協會「ECMA」組織出現完成並定義了
ECMA-262這樣一種名為ECMAScript的腳本語言標準;

● ECMAScript5「ES5」是最流行的版本;
ECMAScript6「ES6」是最新的版本;

● 各瀏覽器廠商基於ECMAScript的標準
完成了對各自瀏覽器的標準更新,實現統一;



● 微軟借助Windows的壟斷性在"瀏覽器大戰"中戰勝網景。


3、JS的使用場景有哪些?

1)HTML、CSS和JS三者的關系:

2)JS的使用場景:

最初的JS只用來支持網頁表單數據的驗證,
如今的JS廣泛使用於如下各種場景:

◆ 網頁/網遊/頁遊;

◆ Electron.js框架和V8「JS渲染引擎」,制作桌面程序;

◆ React.js可以制作手機/移動端程序;

◆ Node.js用來作為後端運行環境。

3)為什麽JS非常值得我們學習?

◆ 目前,全世界幾乎所謂的網站都在使用JS;

◆ 幾乎所有現代的瀏覽器都直接原生支持JS;
PC/手機/平板等幾乎所有硬件設備也支持JS;

◆ 作為Web工程師和Java工程師,如果想制作漂亮的網頁;


或者實現高效的動態驗證,JS是必須的工具。

4、JS代碼的怎樣引入?

3種方式:

1)內聯式

<script type="text/javascript">
...JS代碼
</script>

2)外部式:

格式:

<script src="*.js"></script>

註意:

● 外部JS文件後綴:.js;

● 在JS文件中不需要<script>標簽,直接寫JS代碼即可;

● JS文件不能直接運行,需要嵌入到HTML文檔中執行。

3)嵌入式「將JS代碼嵌入標簽作為屬性;不推薦」:

4)補充·JS在頁面中的位置:

理論上可以將JS代碼置於HTML任意位置,但一般放在head或body部分:

◆ 放在<head>部分:

最常用方式;瀏覽器解析head部分時就會執行JS代碼,
這樣頁面在被載入之前,腳本就已經被載入;
即:這樣可以確保頁面被載入之後,腳本已經準備好被調用;
通常用來放置一些函數代碼;

◆ 放在<body>部分:

在頁面被載入時腳本才會被載入並立即執行;
通常用來放置一些動態生成頁面內容的代碼。

特別註意:

● 因為瀏覽器解析存在順序,所有前面的<script>將會先執行;

● 進行頁面初始化操作的JS代碼應該放在head中,
因為初始化的操作應該在頁面載入之前完成;

● 但如果是通過事件調用的function,那麽位置沒有要求。


5、JavaScript-認識語句和符號:

1)意義:

JS的語句就是給瀏覽器的命名,
這些命名的作用是告訴瀏覽器要做的事情。

2)格式:

每條JS的語句格式:語句;

註意:

● 一行的結束被認為是語句的結束,通常結尾以;作為標記;

● 雖然;也可以不寫,但我們要養成良好的編程習慣。


6、JavaScript-認識註釋符

2種:

1)單行註釋:

// 註釋文字

2)多行註釋:

/*
* 註釋文字
* 註釋文字...
*/

7、JavaScript-變量

1)概念:

◆ 字面意思:可變的量;

◆ 編程角度:變量是用來存儲某種/某些數據值的存儲器;

◆ 簡單來說:變量是一塊內存區域,
用來臨時性存放一些中轉的數據,且存在數據類型。

2)定義:

使用var關鍵字聲明,語法格式:

var 自定義變量名 = 值;

註意:

● 變量雖然也可以不聲明直接使用,但不規範;

● JS是一種弱類型輕量級腳本語言,
不要求強制為變量指定一種類型「不同與Java/C」,
即:JS不嚴格限制變量使用的數據類型,
JS會自動推算它們的類型。

3)命名:

變量名可以任意取名,但要遵循如下命名規則:

◆ 組成:大寫字母/小寫字母、數字、下劃線、美元符$、中文等;
建議:有意義的英文單詞,多個單詞首字母大寫區分;

◆ 變量名嚴禁以數字開頭;

◆ 變量名嚴禁使用JS關鍵字或保留字

◆ 變量名嚴禁使用特殊符號

◆ 變量名對大小寫敏感

4)特殊:

◆ 變量可以同時聲明,以,隔開;

1  var a,b,c;

◆ 變量可以先聲明,再賦值;  

1 var a; 
2 a = 10;

◆ 變量可以重復聲明和賦值。

1   var a = 10;
2 
3   var a = 5;

8、JavaScript-數據類型

1)什麽是數據類型?

2)關於JS的數據類型:

◆ 說明:不同於Java/C等編程語言,強制要求定義變量的數據類型,
否則無法通過編譯,JS為弱類型腳本語言,會智能推斷數據類型,
即:數據類型無需強制定義;

◆ 註意:但是如果完全不定義類型,
有時JS也會幫助我們錯誤的設想一些類型,
從而造成一些不可預知的錯誤,
所以為了創建穩固的程序,
必須掌握JS的數據類型。

3)種類:

2類6種:

----基本數據類型----

數值型number: 保存整數/浮點數

字符串型string: 保存單個字符/字符串;‘‘或""

布爾型boolean: 定義真假;true真或false假

空類型null: 空對象指針/引用;
一個變量後續需要引用具體對象,。
初始化時建議初始化為null

不明確型undefined: 一個變量沒有初始化賦值,就是undefined

----對象數據類型----

對象型object: JS中的對象一組屬性和方法的集合;
具體的關於對象創建方法和特性,後續詳解

4)轉型:

◆ Number(): 將數據值轉為整數,可以用於任何數據類型

◆ parseInt(): 將數據值轉為整數,用的比較多

◆ parseFloat(): 將數據值轉為小數

◆ toString(): 轉字符串

◆ String(): 轉字符串「不確定要轉換的變量的類型/值」

◆ Boolean(): 轉布爾值


9、JavaScript-轉義符

1)什麽是轉義符?

◆ 說明:JS包含很多不能直接輸入的特殊字符,可以使用轉義字符替代

2)轉義符:\n , \t ,...用反斜杠改變其原有的含義


10、JavaScript·運算符

1)概念:

統指能夠對數據進行操作「賦值/運算/比較...」的特殊符號。

2)分類:

7種:

◆ 算術運算符
◆ 賦值運算符
◆ 關系運算符
◆ 邏輯運算符
◆ 位邏輯運算符
◆ 位移運算符
◆ 三目運算符

3)運算符1·算術運算符:

9種:

+ 正號
- 負號
+ 加號
- 減號
* 乘號
/ 除號
% 取余/求模
++ 自增
-- 自減

4)運算符2·賦值運算符:

6種:

=
+=
-=
*=
/=
%=

註:

<op>=表變量初值對<op>=右邊的值或結果進行<op>運算,
運算完成後將最終結果重新賦給變量。

5)運算符3·關系元素符:

7種:

> 大於
< 小於
>= 大於等於
<= 小於等於
== 等於「只比較值」
=== 全等於/恒等於「值和類型都比較」
!= 不等於「也作<>」

註:

返回值一定是boolean值。

6)運算符4·邏輯運算符:

3種:

&& 邏輯與
|| 邏輯或
! 邏輯非

註:

邏輯運算符只能操作boolean值,返回值也是boolean值。

7)運算符5·位邏輯運算符:

4種:

~ 按位取反
& 按位與
| 按位或
^ 按位異或

註:

● 位邏輯運算符采用邏輯運算符運算思想對二進制數字進行運算;

● 操作數必須是整數;

● 數值在計算機中二進制的補碼形式存放。

------------延伸知識:什麽是原碼、反碼、補碼?------------

Ⅰ、正數「三碼合一」:

原碼:二進制數本身
反碼:二進制數本身
補碼:二進制數本身

Ⅱ、負數「取反加1」:

正數的原碼:二進制數本身
負數的原碼:在正數原碼基礎上,修改最左邊的符號位
註:計算機中0表正號,1表負號
負數的反碼:在負數原碼基礎上,最左邊的符號位不變,其他全變
負數的補碼:在負數反碼基礎上,加1

8)運算符6·位移運算符:

3種:

<< 左移
>> 帶符號右移
>>> 無符號右移

註:

● 操作數必須是整數;

● 運算法則:

<< :高位溢出 -> 舍去;低位空出 -> 直接補0;
>> :低位溢出 -> 舍去;高位空出 -> 補上符號位;
>>> :低位溢出 -> 舍去;高位空出 -> 直接補0。

思考:

為什麽左移只有1種,而右移卻有2種?

9)運算符7·三目運算符:

也稱條件運算符/選擇運算符

1種:

A ? B : C

註:

● A必須是boolean值;

● B和C的類型沒有要求,且可以不一樣。

10)補充·字符串拼接符:

註:

對字符或字符串變量使用+時,並不是對它們進行相加而是拼接。


11、JavaScript·語句

1)什麽叫做程序的流程控制?

2)流程控制的方式:

3種:

◆ 順序結構
◆ 選擇結構
◆ 循環結構

3)流程控制的實現:

JS語句;

4)語句的分類:

6種:

◆ 表達式語句
◆ 空語句
◆ 標號語句
◆ 選擇語句*
◆ 循環語句*
◆ 跳轉語句*

5)語句1·表達式語句:

● 泛指:變量的賦值/運算符的操作/關系的判斷...

● 特點:以;結尾。

6)語句2·空語句:

● 格式:;

● 意義:不執行任何實際操作。

7)語句3·標號語句:

● 格式:一般配合循環語句和跳轉語句一起使用;
在循環語句外使用一個自定義的單詞和一個冒號做一個標記;
後續配合跳轉語句實現指定跳轉。


8)語句4·選擇語句:

2種句式:

--------------if...else if...else條件選擇語句--------------

3種句型:

Ⅰ、

1 if (<boolean>) {
2 復合語句;
3 }
4 ...
5 boolean為true => 執行1次
6 boolean為false => 不執行

Ⅱ、

1 if (<boolean>) {
2 復合語句;
3 }
4 else {
5 復合語句;
6 }
7 
8 if滿足    => 執行1次if,else不執行
9 if不滿足    => 直接執行else

Ⅲ、

 1 if (<boolean>) {
 2 復合語句;
 3 }
 4 else if (<boolean>) {
 5 復合語句;
 6 }
 7 ...
 8 else {
 9 復合語句;
10 }
11 
12 if滿足    => 執行1次if,else if和else都不執行
13 if不滿足    => 開始判斷else if => 誰判斷誰執行誰終止
14 if和else if都不滿足 => 直接執行else

--------------switch...case開關/分支選擇語句--------------

 1 switch (value) {
 2 
 3 case 值1:
 4 復合語句;
 5 
 6 case 值2:
 7 復合語句;
 8 
 9 ...
10 
11 default:
12 復合語句;
13 }

case常量值==switch返回值 -> 執行該case及其下面的所有case和default;
case常量值!=switch返回值 -> 繼續判斷下一個case分支「從上往下依次」;
default分支 -> 所有case不滿足時默認執行。

註:

● switch必須指定常量值或常量表達式;

● case也必須指定常量值或常量表達式,不能接undefined值;

● 所有case分支的值不能相同;

● case分支:1~n個;default分支:0~1個,且位置不固定。

9)語句5·循環語句:

3種:

-----------------while循環「先判斷再執行」-----------------

while (<boolean>) {
復合語句;    => 循環體
叠代語句;    => ++ -- += -=
}

boolean為true => 執行1次循環體 => ... => 條件表達式+叠代決定次數
boolean為false => 結束循環

----------------do...while循環「先執行再判斷再執行-----------------」

do {
復合語句;    => 循環體
叠代語句;    => ++ -- += -=
}
while(<boolean>);

執行1次循環體 => boolean為true => ... 條件表達式+叠代決定次數
=> boolean為false => 結束循環

----------------for循環「最常用;窮舉/遍歷」----------------

2種:

Ⅰ、數值型for循環/普通for循環:

for (①變量表達式; ②條件表達式; ③叠代) {
復合語句; => 循環體
}

①變量表達式「執行1次」 => ②條件表達式為true => 執行1次循環體
=> ③叠代 => ②條件表達式... => ②條件表達式+③叠代決定次數

Ⅱ、對象型for循環/加強for循環/for-each循環:

for (①變量 in ②對象) {
復合語句; => 循環體
}

直接使用①變量保存②對象中的每個元素值「指針指向了每個數字值」。

----------------3種循環的總結----------------

Ⅰ、如果循環體只有一條語句,{}可以省略;

Ⅱ、3種循環的選擇:

如果事先知道循環的次數 => for循環
eg:求1 - 3 + 5 - 7 + 9 - 11 + ...的前20項的結果。

如果事先不知道循環的次數 => while循環
eg:求1 - 3 + 5 - 7 + 9 - 11 + ... + n的結果,n讓用戶輸入。

如果需要預先執行1次 => do...while循環

10)語句6·跳轉語句:

● 為什麽JS語法要引入跳轉語句?

使程序的流程跳轉到當前位置以外的部分「方法/switch/循環語句」。

● 句型:

3種:
特點 場景
return語句: 跳出+返回 方法「結尾」
break語句: 跳出+結束 switch/循環語句
continue語句: 跳出+繼續 循環語句

----------------return語句----------------

● 場景:一般寫在函數的結尾;

● 作用:使得主程序的流程從函數中跳出,並返回到調用該函數處。

----------------break語句----------------

● 場景:一般用在switch語句/循環語句內部;

● 作用:從上述語句中跳出,並且不再執行。

----------------continue語句----------------

● 場景:一般用在循環語句內部;

● 作用:從循環語句中跳出,並繼續循環的下一次執行
「結束當前當次循環」。

JavaScript語法基礎(1)