腳本引入
● 我們可以使用一個<script> 標(biāo)簽將 JavaScript 代碼添加到頁面中蕉陋。
● type 和 language 屬性不是必需的。
● 外部的腳本可以通過 <script src="path/to/script.js"></script> 這種方式插入欧穴。
命名
- 匈牙利命名法 (變量名 = 類型+對象描述)
- 駝峰命名法
聲明
● 顯示聲明 (var 變量名=xxx)
● 陋習(xí) (沒有類型佳鳖;重復(fù)聲明;隱式聲明棚赔;不聲明直接賦值)
● 正解 (先聲明帝簇,后讀寫; 先賦值靠益,后運算)
變量類型
● 值類型
a. 占用空間固定丧肴,保存在棧中
b. 保存與復(fù)制的是值本身
c. 使用typeof檢測數(shù)據(jù)的類型
d. 基本類型數(shù)據(jù)是值類型
● 引用類型
a. 占用空間不固定,保存在堆中
b. 保存與復(fù)制的是指向?qū)ο蟮囊粋€指針
c. 使用instanceof檢測數(shù)據(jù)的類型
d. 使用new()方法構(gòu)造出的對象是引用型
作用域
● 全局變量
a. 包含 (在函數(shù)體外定義的變量胧后; 在函數(shù)內(nèi)部定義的無var的變量)
b. 調(diào)用 (任何位置)
● 局部變量
a. 包含 (在函數(shù)內(nèi)部使用var聲明的變量芋浮;函數(shù)的參數(shù)變量)
b. 調(diào)用 (當(dāng)前函數(shù)體內(nèi)部)
● 優(yōu)先級
a. 局部變量高于同名全局變量;
b. 參數(shù)變量高于同名全局變量壳快;
c. 局部變量高于同名參數(shù)變量纸巷;
● 特性
a. 忽略塊級作用域
b. 全局變量是全局對象的屬性
c. 局部變量是調(diào)用對象的屬性
d. 作用域鏈 (內(nèi)層函數(shù)可訪問外層函數(shù)局部變量镇草; 外層函數(shù)不能訪問內(nèi)層函數(shù)局部變量)
e. 生命周期
■ 全局變量 (除非被顯示刪除,否則一直存在)
■ 局部變量 (自聲明起至函數(shù)運行完畢或被顯示刪除)
■ 回收機(jī)制 (標(biāo)記清除瘤旨;引用計數(shù))
數(shù)據(jù)類型
undefined , null, boolean, string, number,object
運算符
(1)數(shù)學(xué)運算符
- 運算符
+梯啤、-、*裆站、/条辟、% - 復(fù)合賦值運算符
+= 黔夭;-=宏胯;*=;/=本姥;%=
自增自減
● 功能相反
a. ++ 對唯一的運算數(shù)進(jìn)行遞增操作(每次加1)
b. -- 對唯一個運算數(shù)進(jìn)行遞減操作 (每次減1)
● 規(guī)則相同
a. 運算數(shù)必須是一個變量肩袍,數(shù)組的一個元素或者對象的屬性
b. 如果運算數(shù)是非數(shù)值的則運算符會將它轉(zhuǎn)成數(shù)值
● 符號位置決定預(yù)算結(jié)果
a. 運算數(shù)之前 (先進(jìn)行遞增或遞減操作,再進(jìn)行求值)
b. 運算數(shù)之后 (先求值婚惫,再進(jìn)行遞增(遞減)操作)
關(guān)系運算符
- 大小關(guān)系檢測
a. 運算符
■ < 如果A小于B氛赐,則返回值為true,否則返回值為false
■ <= 如果A小于等于B先舷, 則返回值為true艰管,否則返回值為false
■ " >= " 如果A大于等于B,則返回值為true蒋川,否則返回值為false
■ " > " 如果A大于B牲芋,則返回值為true,否則返回值為false
b. 操作規(guī)則
■ 數(shù)值與數(shù)值的比較 (比較它們的代數(shù)值)
■ 僅一個運算數(shù)是數(shù)值 (將另一個運算數(shù)轉(zhuǎn)換成數(shù)值捺球,再比較)
■ 字符串間的比較 (逐字符比較它們的Unicode數(shù)值)
■ 字符串與非數(shù)值的比較 (將運算數(shù)轉(zhuǎn)換成字符串并進(jìn)行比較)
■ 運算數(shù)即非數(shù)字也非字符串 (轉(zhuǎn)換為數(shù)值或字符串后進(jìn)行比較)
■ 運算數(shù)無法被轉(zhuǎn)換成數(shù)值或字符串 (直接返回false)
■ 與NaN的比較 (永遠(yuǎn)返回false)
等值關(guān)系檢測
a. 相等比較
■ 操作符 (== 比較兩個運算數(shù)的返回值是否相等缸浦;!= 比較兩個運算數(shù)的返回值看是否不相等)
■ 類型轉(zhuǎn)換
● 布爾值 (true :1 ; false:0氮兵;)
● 對象 (調(diào)用valueOf() 轉(zhuǎn)換為基本類型)
● 字符串與數(shù)值的比較 (字符串轉(zhuǎn)換為數(shù)值)
■ 比較原則
● null與undefined (相等裂逐; 比肩前不進(jìn)行任何轉(zhuǎn)換)
● NaN (與任何數(shù)值都不相等包括自身)
● 對象 (是否屬于同一對象;是 == 泣栈; 否 !=卜高;)
b. 相同比較
■ 運算符 (=== 比較兩個運算數(shù)的返回值以及數(shù)據(jù)類型看是否相同;! 比較兩個運算數(shù)的返回值以及數(shù)據(jù)類型看是否不同)
■ 比較原則
● 值類型間比較 (只有數(shù)據(jù)類型相同南片,且數(shù)值相等時才能夠相等)
● 值類型與引用類型比較 (肯定不相同)
● 引用類型間比較 (比較的是它們的引用值(內(nèi)存地址))
對象運算符
● in 判斷左側(cè)運算數(shù)是否為右側(cè)運算數(shù)的成員
● instanceof 判斷對象實例是否屬于某個類或構(gòu)造函數(shù)
● new 根據(jù)構(gòu)造函數(shù)創(chuàng)建一個新的對象掺涛,并初始化該對象
● delete 刪除指定對象的屬性,數(shù)組元素或變量
● " . " 或者 " [] " 存取對象數(shù)組元素
● () 函數(shù)調(diào)用铃绒,改變運算運算符優(yōu)先級
邏輯運算符
● 鸽照!邏輯非
a. 返回值
ⅰ. true (空字符串; 0 颠悬;null矮燎;NaN定血;undefined;)
ⅱ. false (對象诞外;非空字符串澜沟;非0數(shù)值(Infinity))
b. 特性 (如果運算數(shù)的值為false則返回true,否則返回false峡谊; 連續(xù)使用兩次茫虽!,可將任意類型轉(zhuǎn)換為boolean類型)
● && 邏輯與
○ 規(guī)則
ⅰ. 第一個操作數(shù)是對象既们,則返回第二個操作數(shù)
2. 第二個操作數(shù)是對象濒析,第一個操作數(shù)只為true,則返回該對象
3. 兩個操作數(shù)都是對象啥纸,則返回第二個操作數(shù)
4. 第一個操作數(shù)是null号杏,則返回null
5. 第一個操作數(shù)是NaN,則返回NaN
6. 第一個操作數(shù)是undefined斯棒,則返回undefined
特性 (當(dāng)且僅當(dāng)兩個運算數(shù)的值都是true時盾致,才返回true,否則返回false荣暮,短路操作庭惜,當(dāng)一個操作數(shù)的值是false,則不再對第二個操作數(shù)進(jìn)行求值)
● || 邏輯或
○ 規(guī)則
ⅰ. 第一個操作數(shù)是對象穗酥,則返回第一個操作數(shù)
2. 第一個操作數(shù)值為false护赊,則返回第二個操作數(shù)
3. 兩個操作數(shù)都是對象,則返回第一個操作數(shù)
4. 兩個操作數(shù)都是null迷扇,則返回null
5. 兩個操作數(shù)都是NaN百揭,則返回NaN
6. 兩個操作數(shù)都是undefined ,則返回undefined
特性 (當(dāng)且僅當(dāng)兩個運算數(shù)的值都是false時蜓席,才返回false器一,否則返回true,如果第一個操作數(shù)值為true厨内,則不會對第二個操作數(shù)進(jìn)行求值)