一、數據類型
基本類型:`Null Boolean String Undefined Number(NB SUN)`引用類型:`Array Function Object`類型判斷:typeof 返回結果`"undefined"(未定義) "boolean"(布爾值) "string"(字符串)"number"(數值) "object"(對象或者null) "funtion"(函數) `
- 拓展:堆 VS 棧(兩種數據結構)
**堆:**隊列優先,先進先出;由操作系統自動分配釋放 ,存放函數的參數值,局部變量的值等。其操作方式類似于數據結構中的棧。**棧:**先進后出;動態分配的空間 一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收,分配方式倒是類似于鏈表。
- 基本類型:基本數據類型可以直接訪問,他們是按照值進行分配的,存放在棧(stack)內存中的簡單數據段,數據大小確定,內存空間大小可以分配。
-
引用類型:即存放在堆(heap)內存中的對象,而js不允許直接訪問內存中的位置,因此操作對象時實際上是操作其引用,而不是實際對象。
引申:js中的淺拷貝與深拷貝 ——待補充
二、操作符
主要有一元,位,布爾,加,減,乘,關系,相等,條件,賦值,逗號等操作符。
- ++遞增/--遞減前置和后置區別?
首先要明白,前置是先計算,再賦值;后置是先賦值,再計算。(操作符在前就先計算,在后就后計算)
例如:
function a(){ var a=5; var c=a++; console.log(c); // 5, a先賦值給c,再自增
};function b(){ var a=5; var c=a++; console.log(c); // 6, a先自增,再賦值給c
};
- 數據轉換(隱式和顯式)
a. 顯式:
Boolean(),Number(),parseInt(),parseFloat(),toString()
b. 隱式:
遞增、遞減(無論是前置還是后置),一元加,減,乘,求余/取模、邏輯非,關系比較,還有if等語句。
這個地方例子還蠻詳細的:https://www.haorooms.com/post...
三、語句
if,for,for-in,continue,break等
- break VS continue
break: 退出整個循環; continue: 退出當前一輪循環;for循環里兩都皆可用。
引申:js中的循環遍歷(包括ES6) ——待補充
四、函數
- 定義函數的幾種方式?
a. 函數聲明:
function fn(){...}
b. 函數表達式:let fn=function(){...}
c. 構造函數方式:let fn=new Function(參數,...,函數體)