一. JavaScript概述
1995年,專門為網(wǎng)頁(yè)交互而設(shè)計(jì)的腳本語(yǔ)言,具有較強(qiáng)邏輯性.
二. JavaScript的組成
ECMAScript -> ES -> 定義語(yǔ)法規(guī)范
DOM 文檔對(duì)象模型, 操作頁(yè)面上的元素
BOM 瀏覽器對(duì)象模型, 利用js操作瀏覽器的前進(jìn),后退,打印,刷新等
三. JavaScript 語(yǔ)言的特點(diǎn)
簡(jiǎn)單
腳本語(yǔ)言: 所寫即所得
基于對(duì)象(支持面向?qū)ο缶幊?更加貼近現(xiàn)實(shí))
動(dòng)態(tài)性(事件驅(qū)動(dòng))
跨平臺(tái)性
四. JavaScript語(yǔ)言介紹
標(biāo)簽: <script type="text/javascript"> js代碼寫在這里 </script>
alert("我是一個(gè)提示框");
console.log("我在控制臺(tái)打印");
document.write("<b>我在頁(yè)面顯示,我可以解析任何HTML代碼</b>");
五. 注釋
單行注釋 -> ctrl + /
多行注釋 -> ctrl + shift + /
在vscode中修改塊注釋的快捷鍵: 文件 -> 首選項(xiàng) -> 鍵盤快捷方式 -> 搜索"塊" -> 切換塊注釋 -> 按 ctrl + shift + / -> 回車(完成)
六.變量
使用var關(guān)鍵字,在內(nèi)存中開辟一個(gè)空間,給空間命名,并且賦值
-
聲明變量
2.1) 變量默認(rèn)是undefined未定義類型
var myName; console.log(myName); // undefined2.2) 聲明變量的同時(shí),賦予初值[推薦]
var myName = "老羅";2.3) 簡(jiǎn)寫: 多個(gè)變量,可以使用逗號(hào)隔開,減少寫var關(guān)鍵字
var myName = "老羅", age="18", sex="男"; 查看js的基本數(shù)據(jù)類型,使用typeof
var str = 123; console.log(typeof(str)); // number
-
js屬于弱類型語(yǔ)言, 在賦值的時(shí)候才能確定數(shù)據(jù)類型
4.1) 值可以是任意類型的數(shù)據(jù)
4.2) 數(shù)據(jù)類型可以被修改
七. 變量命名規(guī)則
只能由數(shù)字,字母,下劃線,$組成
不能以數(shù)字開頭
嚴(yán)格區(qū)分大小寫
不能使用關(guān)鍵字或保留字
-
采用大駝峰或小駝峰命名法
5.1) 大駝峰: 用于類型,構(gòu)造函數(shù)
5.2) 小駝峰: 用于變量,形參,函數(shù)
語(yǔ)義化,見名知意
八. js的數(shù)據(jù)類型
- 字符串類型 String, 由一組雙引號(hào)或單引號(hào)組成的
var str = '哈哈';
var str2 = "哈哈哈";
- 數(shù)值類型 Number
var num = 100;
var num2 = 11.22;
- 布爾類型 Boolean, 值為true/false
var isLogin = true;
- 未定義類型 undefined , 為防止出錯(cuò),js會(huì)隱式設(shè)置一個(gè)默認(rèn)的undefined
var str;
console.log(str); // undefined
- 空地址 null
var n = null;
- 對(duì)象類型 Object, 引用類型
var Person = new Object(); // 創(chuàng)建方式1
Person.name = "張三";
var dog = {name:"大黃"}; // 創(chuàng)建方式2
dog.age = 2;
九.類型轉(zhuǎn)換(其他類型轉(zhuǎn)Boolean)
- string -> boolean ,非空字符串為true,空字符串為false;
- [注] 空格也算內(nèi)容
var str = ""; // false
var str2 =" "; // true
- number -> boolean ,非0為true, 0和NaN為false
console.log(Boolean(0)); // false
console.log(Boolean(NaN)); // false
- null 和 undefined -> Boolean ,始終為false
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
- object -> boolean ,只要值不是null,就為true
console.log(Boolean({})); // true
十. 強(qiáng)制轉(zhuǎn)換
Boolean() 轉(zhuǎn)為布爾類型 [略:見'九']
parseInt() 保留整數(shù)部分?jǐn)?shù)值,不能以字母開頭
console.log(parseInt("100px")); // 100
console.log(parseInt("3.12億")); // 3
console.log(parseInt("px123")); // NaN
- parseFloat() 保留至小數(shù)部分?jǐn)?shù)值
console.log(parseFloat("12.3px")); // 12.3
- Number() 字符串型數(shù)字轉(zhuǎn)數(shù)值型
var str = "12.34";
console.log(Number(str)); // 12.34
-
"", null, undefined 轉(zhuǎn) parseInt()/Number()
5.1) "", null, undefined在parseInt()轉(zhuǎn)換下,始終是NaN
5.2)"", null, undefined在Number()轉(zhuǎn)換下,除了undefined是NaN,其它都是0
console.log(parseInt("")); // NaN
console.log(parseInt(null)); // NaN
console.log(parseInt(undefined)); // NaN
console.log(Number("")); // 0
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN
十一. 隱式轉(zhuǎn)換
- 在運(yùn)算的時(shí)候,除了"+"表示拼接以外, -, *, /, %, ==, ...都會(huì)發(fā)生隱式轉(zhuǎn)換
console.log("200" - 100); // 100
十二. isNaN() 判斷是否不是一個(gè)數(shù)值
NaN -> not a number
NaN -> number類型 [重要]
console.log(isNaN("abc")); // true
console.log(isNaN(10)); // false
console.log(isNaN(null)); // false
console.log(isNaN(undefined)); // true
console.log(isNaN(NaN)); // true
console.log(isNaN(Boolean(NaN))); // false
十三.關(guān)鍵字及其作用
- 關(guān)鍵字: 已經(jīng)被js內(nèi)部使用了的
- break 立即退出循環(huán)
- continue 退出當(dāng)前循環(huán),根據(jù)條件表達(dá)式進(jìn)入下一次循環(huán)
- case 配合switch完成判斷
- switch 多重判斷語(yǔ)句
- default 配合switch,當(dāng)條件不成立時(shí),執(zhí)行該項(xiàng)
- throw 拋出異常
- try 配合catch進(jìn)行錯(cuò)誤判斷
- catch 配合try進(jìn)行錯(cuò)誤判斷
- finally 預(yù)防異常時(shí)使用,無(wú)論異常是否發(fā)生都會(huì)執(zhí)行
- delete 刪除屬性
- if 用于判斷
- else 配合if進(jìn)行條件判斷,用于條件選擇跳轉(zhuǎn)
- do 配合while做前置判斷
- while 判斷語(yǔ)句,可配合do做前置判斷;或獨(dú)立使用做后置判斷
- for 循環(huán)語(yǔ)句
- in 配合for遍歷對(duì)象; 判斷某個(gè)屬性是否屬于某個(gè)對(duì)象
- return 從當(dāng)前函數(shù)退出,并返回一個(gè)值
- function 函數(shù)關(guān)鍵字
- with 設(shè)置代碼在特定對(duì)象中的作用域
- void 聲明沒有返回值
- typeof 檢測(cè)變量的數(shù)據(jù)類型
- this 指向該方法的對(duì)象
- var 聲明變量
- instanceof 用于判斷某個(gè)對(duì)象是否另一個(gè)對(duì)象的實(shí)例
- new 創(chuàng)建一個(gè)新實(shí)例對(duì)象
十三.保留字
- 暫時(shí)還未被使用,將來(lái)可能會(huì)被js內(nèi)部使用
- Byte 字節(jié)
- Boolean 布爾
- char 字符型
- const 常量型
- Double 雙精度浮點(diǎn)型
- Float 單精度浮點(diǎn)型
- Int 整型
- short 短整型
- Long 長(zhǎng)整型
- Enum 枚舉類型
- Public 公有型
- Pravite 私有型
- Protected 保護(hù)型
- Class 類
- Abstract 抽象
- Debugger 調(diào)試器
- Implements 實(shí)現(xiàn)
- Import 導(dǎo)入
- Export 導(dǎo)出
- Interface 接口
- static 靜態(tài)的
- extends 繼承
- super 調(diào)用父類屬性/方法
- Final 對(duì)象不可改變
- Native 計(jì)算機(jī)函數(shù)
- synchronized 同步
- Package 包
- throws 拋出
- Goto 跳轉(zhuǎn)
- transient 實(shí)現(xiàn)Serilizable接口,使對(duì)象序列化
- volatile 修飾變量