js 變數、資料型別、作用域整理
js 變數、資料型別、作用域整理
一、Js 知識體系
JS分為三部分:
1.ECMAScript標準 js基本語法
2.DOM 文件物件模型 DOM提供了方法操作DOM樹上的節點
3.BOM 瀏覽器物件模型 通過BOM可以獲得螢幕解析度 控制瀏覽器跳轉彈出框
更多參考:
BOM中的頂級物件就是window,DOM中的頂級物件是document:JavaScript Window物件 整理
document是window的一個子物件。
window.onload(){}
setInterval() clearInterval()
setTimeout() clearTimeout()
Location物件
DOM物件:HTML DOM / JavaScript DOM 簡介 和整理
二、Js 資料型別
1.基本資料型別
number / string / boolean / undefined / null (可使用typeof方法來判斷基礎物件型別)
2.引用資料型別
function / object
其中需要注意的是:
引用資料型別會開闢出堆記憶體,它們指向的是記憶體地址。
字串之間用 '+' 會拼接字串,如果其他型別資料和字串拼接,會被轉換為字串,這其中涉及到變數的隱式轉換
型別轉換:
數字型別轉換:
parseInt() / parseFloat() / Number()
總結:想要轉整數用parseInt(),想要轉小數用parseFloat(),想要轉數字:Number();要比上面的兩種方式嚴格。
其他型別轉換:
.toString() / String() / Boolean()
補充:
NaN 不是一個數字,或者不是數字與數字的計算就會得到 NaN (isNaN() 判斷一個值是不是 NaN)
! 表示非, !false ==true 的結果為true
操作符:
算數運算子:+ - * / %
算數運算表示式:由算數運算子連線起來的表示式
一元運算子:++ --
二元操作符: && ||
三元操作符:條件?結果1 : 結果2
複合運算子: += -= *= /= %=
複合運算表示式:由複合運算子連線起來的表示式
流程控制:
if(){ } else if(){ }else{ }
switch(){ case :;default: ; }
while(){ } / do{ }while() / for( ; ; ){ } /for in
其中:
break用來取消後續迴圈,continue 用來取消本次迴圈。
switch中的條件判斷使用的是嚴格模式的全等於。
三、Js 內建物件
例項方法---->必須要通過new的方式建立的物件(例項物件)來呼叫的方法
靜態方法---->直接通過大寫的建構函式的名字呼叫的方法(直接通過大寫的物件名字呼叫的)
Array建立方式有兩種:可以直接通過字面量建立 / 通過建構函式進行建立 : var a =[] / var a = new Array()
Math物件 :
Date物件
String物件
字串可以看作是由很多字元組成的陣列,字串有不可變的特性,字串的值之所以看起來是改變的,那是因為指向改變了,並不是真的值改變了。
JSON 物件
四、Js 作用域
作用域:
分為全域性作用域和區域性作用域,根據所在的作用域不同,變數又分為全域性變數和區域性變數。
其中還有塊級作用域,被'{ }'包裹就可以看成一個塊,其實的變數定義,使用var定義可以被外部使用,使用const、let不可以被外部使用。
區域性變數在函式作用域銷燬時,就會被釋放,而全域性變數一旦被建立,就不會被釋放,除非頁面關閉(但是隱式全域性變數可以被銷燬,沒有使用var宣告的全域性變數)。
在所有作用域建立的時候,js引擎會有一個處理,預解釋,它所做的事,就是提前把所有的變數聲明瞭,所有的函式宣告並定義了(所以你可以在定義函式之前來呼叫這個函式)。
預解釋中的變數提升,只會提升到當前作用域的最前面,而不是其他作用域。
預解析會分段(多對的script標籤中函式重名,預解析的時候不會衝突)。
全域性作用域,window:JavaScript Window物件 整理