JavaScript腳本語?&基礎語法&筆記總結
- 0.學前準備:
- JavaScript簡介使??法
- 1. JavaScript簡介
- 什么是JavaScript?
- 前端Web技術的組成:HTML、CSS、JavaScript
- 2. JavaScript使??法
- 在HTML中如何使?JavaScript(三種)
- 1. 內部JavaScript: 使?``````標簽
- 2. 外部 JavaScript:
- 3. 行內JavaScript處理器:
- 3.JavaScript基礎語法
- 3.1.JavaScript的輸出:
- 3.2變數
- 3.3變數的命名規則和規范
- 3.4 陳述句與注釋
- 4.JavaScript中資料型別:
- 4.1JavaScript中資料型別:
- 4.2型別轉換:
- 5. JavaScript運算子
- 5.1按照操作元數的個數不同分為:?元運算子、?元運算子和三元運算子:
- 5.2按照種類劃分?分為如下運算子:
- ① 算數運算子:
- ② 賦值運算子
- ③ ?較運算子
- ④ 邏輯運算子
- ⑤ 位運算子
- ⑥ 條件運算子(三元運算子):
- ⑦ 逗號運算子
- ⑧ 型別運算子
- 5.3 運算子的優先級
- 6. JavaScript流程控制
- 6.1.分?結構(條件陳述句):
- 6.2.回圈結構:
- for 回圈:
- for\...in 回圈遍歷物件:
- while 回圈
- do/while 回圈
- 6.3. 回圈中的 break 和 continue 陳述句
- 7. JavaScript函式
- 7.1JavaScript的函式:
- 7.2系統中常?的內置函式:
0.學前準備:
JavaScript 編程語?允許你在 Web ??上實作復雜的功能,如果你看到?個??不僅僅顯示靜態的資訊,?是顯示依時間更新的內容,或者互動式地圖,或者 2D/3D 影片影像,或者滾動的視頻播放器,等等------你基本可以確定,這需要 JavaScript 的參與,
JavaScript是嵌?到HTML中執?的腳本語?,所以我們建議學習 JavaScript 之前,應當對 HTML和 CSS 有所熟悉,故在學習之前要如下準備:
-
對Web開發有?定了解(包括 JavaScript 基礎簡介),
-
掌握HTML中的常?標簽,
-
CSS常?選擇器和屬性,
-
JavaScript語?的學習路線:
JavaScript簡介使??法
- 基礎語法
- 資料型別
- 運算 符
- 流程控制
- 函式
- 物件
- 內置物件
- 事件
- BOM
- HTML DOM
- XML DOM
- Ajax
1. JavaScript簡介
什么是JavaScript?
-
JavaScript 是?種客戶端腳本語?(腳本語?是?種輕量級的編程語?),
-
JavaScript 通常被直接嵌? HTML ??,由瀏覽器解釋執?
-
JavaScript 是?種解釋性語?(就是說,代碼執?不進?預編譯),
-
特點:弱型別和基于物件,(因為?向物件需要具有封裝、繼承、多型的特征)
-
JavaScript語?中包含三個核?:ECMAScript基本語法、DOM、BOM
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-XLp8MUI7-1605111366874)(media/image1.png)]{width="5.776388888888889in" height="2.2715277777777776in"}](https://img.uj5u.com/2020/11/16/190532161404361.png)
前端Web技術的組成:HTML、CSS、JavaScript
-
HTML是?種標記語?,?來結構化我們的??內容并賦予內容含義,例如定義段落、標題和資料 表,或在??中嵌?圖?和視頻,
-
CSS 是?種樣式規則語?,可將樣式應?于 HTML 內容, 例如設定背景顏?和字體,在多個列中布局內容,
-
JavaScript 是?種腳本語?,可以?來創建動態更新的內容,控制多媒體,制作影像影片,還有很多,(雖然它不是萬能的,但可以通過簡短的代碼來實作神奇的功能,)
2. JavaScript使??法
可以像添加CSS那樣將 JavaScript 添加到 HTML ??中,CSS 使?元素鏈接外部樣式表,使?
在HTML中如何使?JavaScript(三種)
1. 內部JavaScript: 使?<script> ... </script>標簽
- 屬性:
- charset(可選)字符集設定、
- defer(可選執?順序)值:defer、
- language(已廢除)、
- src(可選)使?外部的js腳本?件type(必選)型別:值:text/javascript
<script type="text/javascript">
<!--
javaScript語?
//-->
</script>
2. 外部 JavaScript:
- 使?外部導?js會使代碼更加有序,更易于復?,且沒有了腳本的混合,HTML也會更加易 讀,
<script type="text/javascript" src="my.js"></script>
3. 行內JavaScript處理器:
- 就是將js代碼寫?html代碼中,如在html標簽的事件中或超級鏈接?,
<button onclick="javaScript語?"></button>
<a href="javascript:alert('aa');alert('bb')">點擊</a>
3.JavaScript基礎語法
3.1.JavaScript的輸出:
- JavaScript 沒有任何直接列印或者輸出的函式,
- 若有顯示資料可以通過下?不同的?式來輸出:
- window.alert() 彈 出 警 告 框
- document.write() ?法將內容寫到 HTML ?檔中
- innerHTML 寫?到 HTML 元素
- console.log() 寫?到瀏覽器的控制臺
- 參考示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaScript實體</title>
</head>
<body>
<h3>測驗JavaScript的輸出</h3>
<div id="did">div層</div>
</body>
<script>
//彈出?個資訊提示框
window.alert("Hello JavaScript!");
//輸出到瀏覽器??中
document.write("這個是??中的輸出");
//通過寫?HTML標簽中,完成??中的輸出
document.getElementById('did').innerHTML="div層中的輸出";
//控制臺上的輸出
console.log("控制臺上的輸出");
</script>
</html>
3.2變數
- 什么是變數
變數是計算機記憶體中存盤資料的識別符號,根據變數名稱可以獲取到記憶體中存盤的資料 - 為什么要使?變數
使?變數可以?便的獲取或者修改記憶體中的資料 - 如何使?變數 使?var宣告變數
var name;
- 變數的賦值
var name;
name = "zhangsan";
- 同時宣告多個變數
var name,age,sex;
name = 'lisi';
age = 20;
sex = "man"
同時宣告多個變數并賦值
var name = 'wangwu', age = 25;
3.3變數的命名規則和規范
-
規則 - 必須遵守的,不遵守會報錯
- 由字?、數字、下劃線、$符號組成,不能以數字開頭
- 不能是關鍵字和保留字,例如:for、 if、while,
- 區分??寫
-
規范 - 建議遵守的,不遵守不會報錯
- 變數名必須有意義
- 遵守駝峰命名法,?字??寫,后?單詞的?字?需要?寫,例如:userName、userPassword
-
下?哪些變數名不合法
a
1
age18
18age
name
$name
_sex
&sex
theworld theWorld
3.4 陳述句與注釋
- 陳述句:
- ?般程式中的陳述句是由運算式加分號構成; 組成,(js中的每條陳述句之間的分割符可以是回?換?也可以是";"分號(推薦))
- ?運算式的種類很多:
- 如:算術運算式、賦值運算式、關系運算式、邏輯運算式等等…
- 也可以是?個函式、?法的調?
- 腳本注釋:
// 單?注釋 和 /* 多?注釋 */
- 單?注釋
單?注釋以 // 開頭,
任何位于 // 與?末之間的?本都會被 JavaScript 忽略(不會執?),
- 多?注釋
多?注釋以 /* 開頭,以 */ 結尾,
任何位于 /* 和 */ 之間的?本都會被 JavaScript 忽略,
- 注釋的?的:
- 為程式添加輔助說明,便于閱讀理解,
- 注釋掉臨時不需要執?的代碼、便于除錯、排錯,
4. JavaScript資料型別
4.JavaScript中資料型別:
4.1JavaScript中資料型別:
- 值型別(基本型別):
字串(String)、數字(Number)、布爾(Boolean)、對空(Null)、未定義(Unde?ned)、 Symbol,
注意:Symbol 是 ES6 引?了?種新的原始資料型別,表示獨???的值, - 引?資料型別: 物件(Object)、陣列(Array)、函式(Function),
//我們使?typeof運算子獲取基本資料型別
//Undefined 這個值表示變數不含有值
console.log(typeof a); //undefined 未定義的
var a = 10;
console.log(typeof a); //number
a = 3.14
console.log(typeof a); //number
a = 'zhangsan'
console.log(typeof a); //string
a = true
console.log(typeof a); //boolean
//可以通過將變數的值設定為 null 來清空變數
a = null
console.log(typeof a); //object
console.log(a); //null
a = [10,20,30];
//或 a = new Array(10,20,30);
console.log(typeof a); //object
console.log(a instanceof Array); //true
a = function(){} //定義空?函式
console.log(typeof a); //function
console.log(a instanceof Function); //true
/*
//整數的進制的輸出
console.log(10); //輸出?進制數的值
console.log(0b10); //輸出?進制數10的值
typeof 運算子獲取?個變數的型別,回傳結果如下:
undefined - 如果變數是 Undefined 型別的
boolean - 如果變數是 Boolean 型別的
number - 如果變數是 Number 型別的 (整數、浮點數)
string - 如果變數是 String 型別的 (采?""、 '')
object - 如果變數是?種引?型別或 Null 型別的 如: new Array()/ new String()...
function -- 函式型別
undefined 和 null 的區別
null 和 undefined 的值相等,但型別不等:
console.log(0o10); //輸出?進制數10的值
console.log(0x10); //輸出?六進制數10的值
//?進制轉換其他進制
var x = 110;
x.toString(2)//轉為2進制
x.toString(8)//轉為8進制
x.toString(16)//轉為16進制
//其他進制轉?進制
var x = "110"//這是?個?進制的字串表示
parseInt(x, 2)//把這個字串當做?進制, 轉為?進制
var x = "70"//這是?個?進制的字串表示
parseInt(x, 8)//把這個字串當做?進制, 轉為?進制
var x = "ff"//這是?個?六進制的字串表示
parseInt(x, 16)//把這個字串當做?六進制, 轉為?進制
*/
- typeof 運算子獲取?個變數的型別,回傳結果如下:
- undefined - 如果變數是 Undefined 型別的
- boolean - 如果變數是 Boolean 型別的
- number - 如果變數是 Number 型別的 (整數、浮點數)
- string - 如果變數是 String 型別的 (采?""、 ‘’)
- object - 如果變數是?種引?型別或 Null 型別的 如: new Array()/ new String()…
- function – 函式型別
typeof "zhangsan" // 回傳 string
typeof 3.14 // 回傳 number
typeof NaN // 回傳 number
typeof true // 回傳 boolean
typeof [10,20,30,40] // 回傳 object
typeof {name:'lisi', age:20} // 回傳 object
typeof new Date() // 回傳 object
typeof function(){} // 回傳 function
typeof myCar // 回傳 undefined (如果 myCar 沒有宣告)
typeof null // 回傳 object
- undefined 和 null 的區別
- null 和 undefined 的值相等,但型別不等:
typeof undefined // undefined
typeof null // object
null === undefined // false
null == undefined // true
- object引?型別 引?型別通常叫做類(class),也就是說,遇到引?值,所處理的就是物件,Object 物件?身?處不?,不過在了解其他類之前,還是應該了解它, 因為 ECMAScript 中的Object 物件與 Java 中的 java.lang.Object 相似, ECMAScript 中的所有物件都由這個物件繼承?來,Object 物件中的所有屬性 和?法都會出現在其他物件中,所以理解了 Object 物件,就可以更好地理解其他物件,
- 值型別理解:變數之間的互相賦值,是指開辟?塊新的記憶體空間,將變數值賦給新變數保存到新開辟的記憶體??;之后兩個變數的值變動互不影響,例如:
var a = 10; //開辟?塊記憶體空間保存變數a的值“10”;
var b = a; //給變數 b 開辟?塊新的記憶體空間,將 a 的值 “10” 賦值?份保存到新的記憶體?;
//a 和 b 的值以后?論如何變化,都不會影響到對?的值;
- 引?型別理解:變數之間的互相賦值,只是指標的交換,?并?將物件(普通物件,函式物件,陣列物件)復制?份給新的變數,物件依然還是只有?個,只是多了?個指引,
//需要開辟記憶體空間保存物件,變數 a 的值是?個地址,這個地址指向保存物件的空間;
var a = { x: 1, y: 2 };
var b = a; // 將a 的指引地址賦值給 b,?并?復制?給物件且新開?塊記憶體空間來保存;
// 這個時候通過 a 來修改物件的屬性,則通過 b 來查看屬性時物件屬性已經發?改變;
4.2型別轉換:
- JavaScript 變數可以轉換為新變數或其他資料型別:
- 通過使? JavaScript 函式
- 通過 JavaScript ?身?動轉換
ECMAScript 中可?的 3 種強制型別轉換如下:
Boolean(value) - 把給定的值轉換成 Boolean 型;
Number(value) - 把給定的值轉換成數字(可以是整數或浮點數);
String(value) - 把給定的值轉換成字串;
使?:Number()、parseInt() 和parseFloat() 做型別轉換
Number()強轉?個數值(包含整數和浮點數),
*parseInt()強轉整數,
*parseFloat()強轉浮點數
函式isNaN()檢測引數是否不是?個數字, is not a number
- 參考示例:
//轉換字串型別
String(100 + 23) // 回傳 "123"
String(true) // 回傳 "true"
String(new Date())// 回傳 "Tue May 14 2019 11:06:28 GMT+0800 (中國標準時間)"
String([10,20]) // 回傳 "10,20"
String(null) // 回傳 "null"
//轉換數值型別
Number("3.14") // 回傳 3.14
Number("3.14abc") // 回傳 NaN
parseFloat("3.14")//回傳 3.14
parseFloat("3.14abc")//回傳 3.14
parseFloat("b3.14abc")//回傳 NaN
parseInt("3.14") //回傳 3
parseInt("3.14abc")//回傳 3
parseInt("b3.14abc")//回傳 NaN
5. JavaScript運算子
5.1按照操作元數的個數不同分為:?元運算子、?元運算子和三元運算子:
- 如下?元運算子
delete:?于洗掉物件中屬性的 如:delete o.name; //洗掉o物件中的name屬性
++ -- : ?元加法和?元減法
5.2按照種類劃分?分為如下運算子:
① 算數運算子:
② 賦值運算子
-賦值運算子向 JavaScript 變數賦值,
③ ?較運算子
④ 邏輯運算子
⑤ 位運算子
- 位運算子處理 32 位數,
- 該運算中的任何數值運算元都會被轉換為 32 位的數,結果會被轉換回 JavaScript 數,
⑥ 條件運算子(三元運算子):
- JavaScript 也包含了可基于某些條件向變數賦值的條件運算子,
語法
variablename = (condition) ? value1:value2
實體
var voteable = (age < 18) ? "太年輕":"?夠成熟";
⑦ 逗號運算子
?逗號運算子可以在?條陳述句中執?多個運算,
var iNum1=1, iNum2=2, iNum3=3;
⑧ 型別運算子
| 運算子 | 描述 |
|---|---|
| typeof | 回傳變數的型別, |
| instanceof | 回傳 true,如果物件是物件型別的實體, |
- instanceof 運算子與 typeof 運算子相似,?于識別正在處理的物件的型別,
- 與 typeof ?法不同的是,instanceof ?法要求開發者明確地確認物件為某特定型別,
var oStringObject = new String("hello world");
console.log(oStringObject instanceof String); // 輸出 "true"
// 判斷 foo 是否是 Foo 類的實體
function Foo(){}
var foo = new Foo();
console.log(foo instanceof Foo)//true
// 判斷 foo 是否是 Foo 類的實體 , 并且是否是其?型別的實體
function Aoo(){}
function Foo(){}
Foo.prototype = new Aoo();//JavaScript 原型繼承
var foo = new Foo();
console.log(foo instanceof Foo)//true
console.log(foo instanceof Aoo)//true
5.3 運算子的優先級
優先級從?到底
1. () 優先級最?
2. ?元運算子 ++ -- !
3. 算數運算子 先 * / % 后 + -
4. 關系運算子 > >= < <=
5. 相等運算子 == != === !==
6. 邏輯運算子 先 && 后||
7. 賦值運算子 = += -= *= /= %=
6. JavaScript流程控制
- 任何編程語?都是由?系列陳述句構成的,
- ?條陳述句可以是?個賦值陳述句,?個函式調?,?個回圈,甚??個什么也不做的(空陳述句)條件 陳述句,
- 在任何??程式設計語?中,都需要?持滿?程式結構化所需要的三種基本結構:
- 順序結構
- 分?結構(選擇結構)
- 回圈結構
- 順序結構:在程式結構中,最基本的就是順序結構,程式會按照?上?下的順序執?,由于結構簡 單所以這?我就不多介紹
6.1.分?結構(條件陳述句):
- 在 JavaScript 中,我們可使?以下分?陳述句:
- if 陳述句 - 只有當指定條件為 true 時,使?該陳述句來執?代碼
- if…else 陳述句 - 當條件為 true 時執?代碼,當條件為false時執?其他代碼
- if…else if…else 陳述句 - 使?該陳述句來選擇多個代碼塊之?來執?
- switch…case 陳述句 - 使?該陳述句來選擇多個代碼塊之?來執?

- if … else 分?判斷示例:
var grade = 70;
//單?分?結構
if(grade>=60){
console.log("成績合格!");
}
//雙分?結構
if(grade>=60){
console.log("成績合格!");
}else{
console.log("成績不及格!");
}
//多分?結構
if(grade>=90){
console.log("成績優秀!");
}else if(grade >= 75 ){
console.log("成績良好!");
}else if(grade >= 60){
console.log("你的成績合格!");
}else{
console.log("成績不及格!");
}

- switch 分?判斷示例:
//switch實作多分枝判斷
//獲取今天星期?的數字
var day=new Date().getDay(); switch (day)
{
case 0:
x="星期?"; break;
case 1:
x="星期?"; break;
case 2:
x="星期?"; break;
case 3:
x="星期三"; break;
case 4: x="星期四"; break;
case 5:
x="星期五";
break; case 6:
x="星期六";
break; default:
x="?效的星期資訊!";
}
console.log(x);
6.2.回圈結構:
- JavaScript ?持不同型別的回圈:
- for - 回圈代碼塊?定的次數
- for/in - 回圈遍歷物件的屬性
- while - 當指定的條件為 true 時回圈指定的代碼塊
- do/while - 同樣當指定的條件為 true 時回圈指定的代碼塊

for 回圈:
for(陳述句1; 陳述句2; 陳述句3){
被執?的代碼塊
}
陳述句1: 在回圈(代碼塊)開始前執?,常?于初始化回圈條件
陳述句2: 定義運?回圈(代碼塊)的條件,?于判斷何時結束回圈
陳述句3: 在回圈(代碼塊)已被執?之后執?,常?于遞增或遞減來影響陳述句2的判斷,直?結束回圈
示例代碼:
//回圈輸出1~10的值
for(var i=1;i<=10;i++){
console.log(i);
}
//計算1~100的累加值
var sum = 0;
for(var i=1;i<=100;i++){
sum += i;
}
console.log(sum); //5050
for…in 回圈遍歷物件:
for(屬性變數 in 被遍歷物件){
被執?的代碼塊
}
參考示例
var ob = {"name":"張三","age":22,"sex":"男"};
//遍歷物件ob中的每個屬性
for(key in ob){
//輸出屬性和對應的屬性值
console.log(key+":"+ob[key]);
}
/*
//輸出結果:
name:張三
age:22
sex:男
*/
while 回圈
While 回圈會在指定條件為真時回圈執?代碼塊,
while (條件){
需要執?的代碼
}
注意:如果您忘記增加條件中所?變數的值,該回圈永遠不會結束,該可能導致瀏覽器崩潰,
參考代碼:
//回圈輸出10~1的值
var i = 10;
while(i>=1){
console.log(i);
i--;
}
//計算1~100的累加值
var sum = 0;
var i = 0;
while(i<=100){
sum += i;
i++;
}
console.log(sum); //5050
do/while 回圈
- do/while 回圈是while 回圈的變體,
- 該回圈會執??次代碼塊,在檢查條件是否為真之前,然后如果條件為真的話,就會重復這個回圈,
- 該回圈?少會執??次,即使條件是 false,隱藏代碼塊會在條件被測驗前執?,
do{
需要執?的代碼;
}while(條件);
參考示例:
//回圈輸出1~10的值
var i = 1;
do{
console.log(i);
i++;
}while(i<=10);
//計算1~100的累加值
var sum = 0;
var i = 0;
do{
sum += i;
i++;
}while(i<=100);
console.log(sum); //5050
6.3. 回圈中的 break 和 continue 陳述句
- break 陳述句?于跳出回圈,
- continue ?于跳過回圈中的?個迭代,
- break陳述句
- 我們已經在本教程稍早的章節中?到過 break 陳述句,它?于跳出 switch() 陳述句,
- break 陳述句可?于跳出回圈,
- break 陳述句跳出回圈后,會繼續執?該回圈之后的代碼(如果有的話)
- continue 陳述句中斷回圈中的迭代,如果出現了指定的條件,然后繼續回圈中的下?個迭代,
7. JavaScript函式
7.1JavaScript的函式:
- 函式是什么:
- 函式(function)是?段完成指定任務的已命名代碼塊,函式可以遵照給它的?組值或引數完成特定的任務,并且可能回傳?個值,
- 在JavaScript中有兩種函式:?定義函式與系統函式,
- 函式的優越性:
- 控制程式設計的復雜性
- 提?軟體的可靠性
- 提?軟體的開發效率
- 提?軟體的可維護性
- 提?程式的重?性
- 標準格式:
function 函式名([引數串列..]){
函式體,,,
[return 回傳值;]
}
- JavaScript三種定義函式?法:
- 第?種是使?function陳述句定義函式 如上?格式
- 第?種是使?Function()建構式來定義函式(不常?)
- var 函式名 = new Function(“引數1”,”引數2”,”引數3”……”函式體”);
- 如: var 函式名 = new Function(”x”,”y”,”var z=x+y;return z;”);
- 第三種是在運算式中定義函式
- var 函式名 = function(引數1,引數2,…){函式體};
- 例如:
//定義
var add = function(a,b){
return a+b;
}
//調?函式
document.write(add(50,20));
- 函式的使?
//通過函式名直接調?函式
//函式名(引數1,引數2,…)
myadd(10,20);
//函式?調?
(function () {
console.log("Hello Function!");
})();
- arguments 物件
- 在函式代碼中,使?特殊物件 arguments,開發者?需明確指出引數名,就能訪問它們,
- arguments是?個物件,是?個偽陣列,arguments[索引]---->實參的值也可以訪問這個值,即第?個引數的值(第?個引數位于位置 0,第?個引數位于位置 1,依此類推)arguments.length—>是實參的個數
- 關于變數作?域:
- 由于函式的出現導致了變數的定義分為函式內定義和函式外定義,即全域和區域變數
- 全域變數:在函式外使?var宣告的變數就是全域變數,全域變數可以在??的任何位置使?
- 全域變數,如果??不關閉,那么就不會釋放,就會占空間,消耗記憶體,
- 區域變數:在函式內使?var關鍵字定義的變數是區域變數,即出了函式外邊?法獲取,
- 隱式全域變數:沒有使?var宣告的變數,就叫隱式全域變數,在函式外可以獲取到,
- 全域變數是不能被洗掉的,隱式全域變數是可以被洗掉的(使?delete)
- 定義變數使?var是不會被洗掉的,沒有var是可以洗掉的
- 函式外?定義的變數是全域變數,函式內可以直接使?,
- 在函式內部沒有使?var定義的=變數則為全域變數,
- 函式中的回傳值:
- 如果?個函式中有return ,那么這個函式就有回傳值
- 如果?個函式中沒有return,那么這個函式就沒有回傳值
- 如果?個函式中沒有明確的回傳值,那么調?的時候接收了,結果就是undefined
- (沒有明確回傳值:函式中沒有return或函式中有return,但是return后?沒有任何內容)
- 函式內容執?遇到return,則?刻執?回傳,且下?的代碼是不會被執?的
7.2系統中常?的內置函式:
escape() //字串編碼
unescape() //字串反編碼
*eval() //將引數字串作為腳本代碼來執?,
*isNaN() // is not a number (不是?個數值)
*parseInt()
*parseFloat()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/219828.html
標籤:其他
下一篇:JS前端面試題(三)
