JavaScript 誕生於1995年,它的出現主要是用於處理網頁中的 前端驗證。 • 所謂的前端驗證,就是指檢查用戶輸入的內容是否符合一定的 規則。 • 比如:用戶名的長度,密碼的長度,郵箱的格式等。 JavaScript是由網景公司發明,起初命名為LiveScript,後來由 於SUN公司的介入 ...
JavaScript
誕生於1995年,它的出現主要是用於處理網頁中的 前端驗證。 • 所謂的前端驗證,就是指檢查用戶輸入的內容是否符合一定的 規則。 • 比如:用戶名的長度,密碼的長度,郵箱的格式等。
JavaScript是由網景公司發明,起初命名為LiveScript,後來由 於SUN公司的介入更名為了JavaScript。1996年微軟公司在其最新的IE3瀏覽器中引入了自己對 JavaScript的實現JScript。於是在市面上存在兩個版本的JavaScript,一個網景公司的 JavaScript和微軟的JScript。 • 為了確保不同的瀏覽器上運行的JavaScript標準一致,所以幾 個公司共同定製了JS的標準名命名為ECMAScript。
JavaScript實現
我們已經知道ECMAScript是JavaScript標準,所以一般情況下 這兩個詞我們認為是一個意思。 • 但是實際上JavaScript的含義卻要更大一些。 • 一個完整的JavaScript實現應該由以下三個部分構成:
編寫第一個javescript頁面
alert("");
控制瀏覽器彈出一個警告框,括弧中填警告框中內容。
document.write("")
可以向body中輸出一個內容,讓電腦在頁面中輸出一個內容。括弧中填輸出內容。
console.log("")
向控制台輸出一個內容。括弧中填輸出內容。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <!--JS代碼需要編寫到script標簽中--> <script type="text/javascript"> alert("哥,你真帥啊!!"); document.write("看我出不出來~~~"); console.log("你猜我在哪出來呢?"); </script> </head> <body> </body> </html>
需要註意的是:js語言的執行順序是從上到下,所以輸出順序從上到下依次輸出。
效果:
控制臺中:
編寫位置
我們目前學習的JS全都是客戶端的JS,也就是說全都是需要在 瀏覽器中運行的,所以我們我們的JS代碼全都需要在網頁中編 寫。
• 我們的JS代碼需要編寫到<script>標簽中。
• 我們一般將script標簽寫到head中。(和style標簽有點像)
• 屬性: – type:預設值text/javascript可以不寫,不寫也是這個值。
– src:當需要引入一個外部的js文件時,使用該屬性指向文件的地址
編寫位置一:可以將js代碼寫在超鏈接的href屬性中,這樣當點擊超鏈接時,會執行js代碼
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <button onclick="alert('討厭,你點我幹嘛~~');">點我一下</button> <a href="javascript:alert('讓你點你就點!!');">你也點我一下</a> <a href="javascript:;">你也點我一下</a> </body> </html>
編寫位置二:可以將js代碼編寫到script標簽。或者在script標簽引入外部編寫的js文件,外部的js文件可以在不同的頁面中同時引用,也可以利用到瀏覽器的緩存機制。(推薦使用的方式)
script標簽一旦用於引入外部文件了,就不能在編寫代碼了,即使編寫了瀏覽器也會忽略。如果需要則可以在創建一個新的script標簽用於編寫內部代碼。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript" src="js/script.js"></script> <script type="text/javascript"> alert("我是內部的JS代碼"); </script> </head> <body> </body> </html>
JavaScript基本語法
1.JS中嚴格區分大小寫
2.JS中每一條語句以分號(;)結尾
- 如果不寫分號,瀏覽器會自動添加,但是會消耗一些系統資源,而且有些時候,瀏覽器會加錯分號,所以在開發中分號必須寫。
3.JS中會忽略多個空格和換行,所以我們可以利用空格和換行對代碼進行格式化
4.單行註釋和多行註釋
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> /* 多行註釋 JS註釋 多行註釋,註釋中的內容不會被執行,但是可以在源代碼中查看 要養成良好的編寫註釋的習慣,也可以通過註釋來對代碼進行一些簡單的調試 */ //單行註釋 //alert("hello"); //document.write("hello"); console.log("hello"); //該語句用來在控制台輸出一個日誌 alert("hello"); </script> </head> <body </body> </html>
字面量和變數
字面量:都是一些不可改變的值
比如 :1 2 3 4 5
字面量都是可以直接使用,但是我們一般都不會直接使用字面量
變數:變數可以用來保存字面量,而且變數的值是可以任意改變的
變數更加方便我們使用,所以在開發中都是通過變數去保存一個字面量,而很少直接使用字面量,可以通過變數對字面量進行描述。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> //聲明變數 //在js中使用var關鍵字來聲明一個變數 var a; //為變數賦值 a = 123; a = 456; a = 123124223423424; //聲明和賦值同時進行 var b = 789; var c = 0; var age = 80; console.log(age); </script> </head> <body> </body> </html>
標識符
在JS中所有的可以由我們自主命名的都可以稱為是標識符,例如:變數名、函數名、屬性名都屬於標識符。
命名一個標識符時需要遵守如下的規則:
1.標識符中可以含有字母、數字、_、$
2.標識符不能以數字開頭
3.標識符不能是ES中的關鍵字或保留字
4.標識符一般都採用駝峰命名法
- 首字母小寫,每個單詞的開頭字母大寫,其餘字母小寫。例如: helloWorld xxxYyyZzz
JS底層保存標識符時實際上是採用的Unicode編碼,
*所以理論上講,所有的utf-8中含有的內容都可以作為標識符
數據類型
在JS中一共有六種數據類型:
String 字元串
Number 數值
Boolean 布爾值
Null 空值
Undefined 未定義
Object 對象
其中String Number Boolean Null Undefined屬於基本數據類型
* 而Object屬於引用數據類型
String 字元串
在JS中字元串需要使用引號引起來,使用雙引號或單引號都可以,但是不要混著用。 引號不能嵌套,雙引號不能放雙引號,單引號不能放單引號。
在字元串中我們可以使用\作為轉義字元,當表示一些特殊符號時可以使用\進行轉義
\" 表示 "
\' 表示 '
\n 表示換行
\t 製表符
\\ 表示\
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script type="text/javascript"> var str = 'hello'; str = '我說:"今天天氣真不錯!"'; str = "我說:\"今天\t天氣真不錯!\""; str = "\\\\\\"; //輸出字面量 字元串str alert("str"); //輸出變數str alert(str); </script> </head> <body> </body> </html>
Number類型
在JS中所有的數值都是Number類型,包括整數和浮點數(小數)
JS中可以表示的數字的最大值
Number.MAX_VALUE
1.7976931348623157e+308
Number.MIN_VALUE(大於0的最小值)
5e-324
如果使用Number表示的數字超過了最大值,則會返回一個
Infinity 表示正無窮
Infinity 表示負無窮
使用typeof檢查Infinity也會返回number
NaN 是一個特殊的數字,表示Not A Number
使用typeof檢查一個NaN也會返回number
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> //數字123 var a = 123; //字元串123 var b = "123"; a = -Number.MAX_VALUE * Number.MAX_VALUE; //返回的結果是infinity a = "abc" * "bcd"; console.log(typeof a); //返回的結果是a = NaN; console.log(typeof infinity); //返回的結果是number console.log(typeof NaN); //返回的結果是number /* * 在JS中整數的運算基本可以保證精確 */ var c = 1865789 + 7654321; /* * 如果使用JS進行浮點運算,可能得到一個不精確的結果 * 所以千萬不要使用JS進行對精確度要求比較高的運算 */ var c = 0.1 + 0.2; console.log(c); </script> </head> <body> </body> </html>
Boolean類型
布爾值只有兩個,主要用來做邏輯判斷:
true
- 表示真
false
- 表示假
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var bool = false; /* 使用typeof檢查一個布爾值時,會返回boolean */ console.log(typeof bool); console.log(bool); </script> </head> <body> </body> </html>
Null和Undefined
Null(空值)類型的值只有一個,就是null。null這個值專門用來表示一個為空的對象。使用typeof檢查一個null值時,會返回object
ndefined(未定義)類型的值只有一個,就undefind。當聲明一個變數,但是並不給變數賦值時,它的值就是undefined。使用typeof檢查一個undefined時也會返回undefined。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var a = null; var b = undefined; console.log(typeof b); </script> </head> <body> </body> </html>
強制類型轉換
轉換string類型
強制類型轉換,指將一個數據類型強制轉換為其他的數據類型。類型轉換主要指,將其他的數據類型,轉換為String Number Boolean。
方式一:將其他的數據類型轉換為String
調用被轉換數據類型的toString()方法,該方法不會影響到原變數,它會將轉換的結果返回。但是註意:null和undefined這兩個值沒有toString()方法,如果調用他們的方法,會報錯。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var a = 123; //調用a的toString()方法 //調用xxx的yyy()方法,就是xxx.yyy() a = a.toString(); a = true; a = a.toString(); a = null; //a = a.toString(); //報錯 a = undefined; //a = a.toString(); //報錯 </script> </head> <body> </body> </html>
方式二:調用String()函數,並將被轉換的數據作為參數傳遞給函數
使用String()函數做強制類型轉換時,對於Number和Boolean實際上就是調用的toString()方法。但是對於null和undefined,就不會調用toString()方法,它會將 null 直接轉換為 "null",將 undefined 直接轉換為 "undefined"
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> a = 123; //調用String()函數,來將a轉換為字元串 a = String(a); a = null; a = String(a); a = undefined; a = String(a); </script> </head> <body> </body> </html>
轉換為number
轉換方式一:
使用Number()函數
字元串 --> 數字
1.如果是純數字的字元串,則直接將其轉換為數字
2.如果字元串中有非數字的內容,則轉換為NaN
3.如果字元串是一個空串或者是一個全是空格的字元串,則轉換為0
布爾 --> 數字
true 轉成 1
false 轉成 0
null --> 數字 0
undefined --> 數字 NaN
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var a = "123"; //調用Number()函數來將a轉換為Number類型 a = Number(a); a = false; a = Number(a); a = null; a = Number(a); a = undefined; a = Number(a); </script> </head> <body> </body> </html>
轉換方式二:
這種方式專門用來對付字元串
parseInt() 把一個字元串轉換為一個整數
parseFloat() 把一個字元串轉換為一個浮點數
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> a = "123567a567px"; //調用parseInt()函數將a轉換為Number /* * parseInt()可以將一個字元串中的有效的整數內容去出來, * 然後轉換為Number */ a = parseInt(a); /* * parseFloat()作用和parseInt()類似,不同的是它可以獲得有效的小數 */ a = "123.456.789px"; a = parseFloat(a); /* * 如果對非String使用parseInt()或parseFloat() * 它會先將其轉換為String然後在操作 */ a = true; a = parseInt(a); a = 198.23; a = parseInt(a); console.log(typeof a); console.log(a); </script> </head> <body> </body> </html>
其他的進位數字
在js中,如果需要表示16進位的數字,則需要以0x開頭。如果需要表示8進位的數字,則需要以0開頭。如果要要表示2進位的數字,則需要以0b開頭。但是不是所有的瀏覽器都支持。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var a = 123; //十六進位 a = 0x10; a = 0xff; a = 0xCafe; //八進位數字 a = 070; //二進位數字 //a = 0b10; //像"070"這種字元串,有些瀏覽器會當成8進位解析,有些會當成10進位解析 a = "070"; //可以在parseInt()中傳遞一個第二個參數,來指定數字的進位 a = parseInt(a,10);