學(xué)習(xí)手冊(cè):
W3School離線手冊(cè)
http://www.w3school.com.cn/
http://www.runoob.com/
https://developer.mozilla.org/zh-CN/
https://caniuse.com/
書籍:
《JavaScript高級(jí)程序設(shè)計(jì)》
《JavaScript權(quán)威指南》
1.JavaScript基本介紹及發(fā)展趨勢(shì)
腳本
livescript --> javascript(網(wǎng)景) --> jscript(微軟) --> ECMA --> ECMAScript
JavaScript = ECMAScript + BOM + DOM
ES3
ES5 -- ECMAScript5.1(IE9之前不支持)
ES6 -- ECMAScript2015
2.JS和H5的關(guān)系
<video>
3.編寫JS及如何運(yùn)行JS
編輯器:HBuilder
sublime text
atom
vscode
JS是嵌套在HTML中的一段腳本程序。類比CSS:
內(nèi)聯(lián):
標(biāo)簽內(nèi)部使用如事件屬性onclick來編寫
內(nèi)部:
<script></script>
標(biāo)簽可出現(xiàn)在任何位置(前中后)
推薦將script標(biāo)簽寫在body結(jié)束標(biāo)簽之前
type="text/javascript" 屬性可省略,默認(rèn)為 text/javascript 屬性取值
外部:
<script src="外部JS資源路徑"></script>
在<script>標(biāo)簽之間不能再添加其它的JS代碼
輸出:
a. alert("提示消息")
-- 是彈出警告框提示消息,有“確定”按鈕
b. document.write("向文檔中輸出的內(nèi)容");
-- 向文檔中輸出內(nèi)容
c. console.log("打印信息")
-- 在控制上打印日志信息
輸入:
a. prompt("提示", "默認(rèn)值")
-- 彈出輸入框,點(diǎn)擊“確定”接收輸入框中的輸入值,點(diǎn)擊“取消”返回 null
JS是在瀏覽器中的 JavaScript 引擎中解釋執(zhí)行的(V8)。
JS中一條語句(命令、代碼)的結(jié)束使用 ; 表示
4.變量的概念及基本運(yùn)算
變量:
是在內(nèi)存中的數(shù)據(jù)存儲(chǔ)空間,隨著運(yùn)算的進(jìn)行,該空間中存儲(chǔ)的數(shù)據(jù)可以變化。
三要素:
變量名
變量值
數(shù)據(jù)類型
數(shù)據(jù)類型:
基本類型:
Number -- 數(shù)字(整數(shù)、小數(shù))
String -- 字符串,使用 "" 或 '' 包含
Boolean -- 布爾,表示真假,可取值為 true 或 false
Undefined -- 未定義,只有 undefined 一個(gè)取值
Null -- 空,通常用于表示空對(duì)象,只有 null 一個(gè)取值
Symbol(ES6) -- 符號(hào)
引用類型:
Object -- 對(duì)象
JS是弱類型(動(dòng)態(tài)類型)的語言:變量的數(shù)據(jù)類型是在運(yùn)行時(shí)確定的。
注釋:
// 單行注釋
/* 多行注釋 */
/** */
變量定義:
語法:var 變量名 = 變量值;
分解:
var 變量名; // 變量聲明
變量名 = 變量值; // 變量賦值
求表達(dá)式的數(shù)據(jù)類型:
typeof 表達(dá)式;
typeof 求解的結(jié)果數(shù)據(jù)類型為字符串,該字符串可取值:
"number"
"string"
"boolean"
"undefined"
"symbol"
"object"
"function"
5.變量命名規(guī)則和關(guān)鍵字的介紹
關(guān)鍵字:
JS語言中已占用的有特殊函義的單詞。
標(biāo)識(shí)符命名
規(guī)則:
a. 能夠包含的字符:字母、數(shù)字、下劃線、$
b. 不能以數(shù)字開頭
c. 不能是關(guān)鍵字
規(guī)范:
a. 采用簡(jiǎn)潔的英文單詞命名
b. 駝峰命名法:
第一個(gè)單詞首字母小寫,其它單詞首字母大寫(小駝峰)
6.變量不同類型之間的自動(dòng)、手動(dòng)類型轉(zhuǎn)換
自動(dòng)(隱式)類型轉(zhuǎn)換
強(qiáng)制(顯式)類型轉(zhuǎn)換:
parseInt()
-- 通常是將字符串解析為整數(shù)數(shù)字
parseFloat()
-- 通常是將字符串解析為浮點(diǎn)數(shù)數(shù)字
Number()
-- 是將其它類型轉(zhuǎn)換為數(shù)字類型
parseInt()與parseFloat() 在轉(zhuǎn)換數(shù)據(jù)類型時(shí)有一定的容錯(cuò)能力,如果第一位就不能轉(zhuǎn)換,則返回的是 NaN(not a number)。
Number()將字符串轉(zhuǎn)換為數(shù)字時(shí),沒有容錯(cuò)能力。
Number() 轉(zhuǎn)換:
字符串-->數(shù)字
兼容:對(duì)應(yīng)數(shù)字
不兼容:NaN
"" --> 0
布爾 --> 數(shù)字
true --> 1
false --> 0
Undefined --> 數(shù)字
undefined --> NaN
Null --> 數(shù)字
null --> 0
Symbol --> 數(shù)字
報(bào)錯(cuò):Cannot convert a Symbol value to a number
Object --> 數(shù)字
--> NaN
Boolean()
可以將其它類型轉(zhuǎn)換為 Boolean 類型,先測(cè)試
String()
7.賦值、關(guān)系、算術(shù)等運(yùn)算符的講解
賦值運(yùn)算符:
= // 將右邊的值的賦給左邊的變量
字符串連接:
+ // 將+號(hào)兩端的字符串拼接在一起(只要 + 號(hào)兩端有一個(gè)是字符串,都是做字符串拼接)
算術(shù)運(yùn)算符:
+
-
*
/
%(模) -- 求余數(shù)
求一個(gè)三位數(shù)字各位數(shù)是多少
關(guān)系運(yùn)算符:
>
<
>=
<=
== / ===
== 是比較值是否相同,如果數(shù)據(jù)類型一致,則直接比較值,如果數(shù)據(jù)類型不一致,則會(huì)先嘗試轉(zhuǎn)換類型,然后再比較值。
=== 是會(huì)嚴(yán)格區(qū)分?jǐn)?shù)據(jù)類型,如果數(shù)據(jù)類型一致則比較值,如果類型不一致則直接返回 false
!= / !==
!= 是比較值是否不相同,如果數(shù)據(jù)類型一致,則直接比較值,如果數(shù)據(jù)類型不一致,則會(huì)先嘗試轉(zhuǎn)換類型,然后再比較值。
!== 是會(huì)嚴(yán)格區(qū)分?jǐn)?shù)據(jù)類型,如果數(shù)據(jù)類型一致則比較值,如果類型不一致則直接返回 true
邏輯運(yùn)算符:
&& -- 并且
exp1 && exp2
|| -- 或者
exp1 || exp2
! -- 非(單目運(yùn)算符)
!exp1
短路運(yùn)算符:&&、||
自增、自減:
++
--
i++/++i;:<==> i = i + 1;
var i = 10;
var j = ++i;
var j = i++;
前綴(++i):先運(yùn)算(自增)后引用(自增運(yùn)算后的值使用)
后綴(i++):先引用(自增運(yùn)算前的值使用)后運(yùn)算(自增)
var i = 10;
var j = i++ + ++i + ++i + i++; // i = 14
10 + 12 + 13 + 13
三目運(yùn)算符:
條件 ? true : false;
閏年條件:
年份能被4整除但不能被100整除,或年份值能被400整除
復(fù)合運(yùn)算符:
+=
-=
*=
/=
%=
i += 5; <==> i = i + 5;
i *= (3 + 7); <==> i = i * (3 + 7);
其它:
()
.
+
-
8.二進(jìn)制
十進(jìn)制
十六進(jìn)制
八進(jìn)制