1.JavaScript 定義了幾種數據類型? 哪些是原始類型?哪些是復雜類型?
- 六種數據類型(ES6新增第七種Symbol類型的值)
- 數值(Nmber):整數和小數(比如1和3.14)
- 字符串(String):字符組成的文本(比如”Hello World”)
- 布爾值(Boolean):true(真)和false(假)兩個特定值
- Undefined:表示“未定義”或不存在,即由于目前沒有定義,所以 此處暫時沒有任何值
- Null:表示無值,即此處的值就是“無”的狀態。
- 對象(Object):各種值組成的集合
- Symbol:表示獨一無二的值。
- 原始類型:
- 數值(Number)
- 字符串(String)
- 布爾值(Boolean)
- Undefined
- Null
- Symbol
- 復雜類型
Object
2.如何判斷一個變量是否是數字、字符串、布爾、函數
- typeof運算符
- instanceof運算符
- Object.prototype.toString方法
3. ==與===有什么區別
- ==表示相等操作符,先轉換后比較,轉換之后比較相等則返回true
- ===表示全等操作符,僅比較而不轉換,未經轉換就相等返回true
4. 以下代碼的輸出結果是?為什么?
- 2
number + number = 2 - 24
string + string = “24” - 24
只有一個字符串是是string,其另一個也轉string類型,則叫做字符串拼接 - 4
加法運算符只有右邊一個操作數,就是另一個運算符。 轉換為數字
5. 以下代碼的輸出結果是?
- 3
等于(a++)+a ; a++ 返回1,自增a等于2,so 1+2 =3 - number2
typeof 優先級比加法運算符高,其實是(typeof a) + 2。起到了字符串拼接作用
6. NaN是什么? 有什么特別之處?
NaN 是一個全局對象的屬性。
NaN 屬性的初始值就是 NaN,和 Number.NaN 的值一樣。在現代瀏覽器中(ES5中), NaN 屬性是一個不可配置(non-configurable),不可寫(non-writable)的屬性。但在ES3中,這個屬性的值是可以被更改的,但是也應該避免覆蓋。
在編碼很少直接使用到 NaN。通常都是在計算失敗時,作為 Math 的某個方法的返回值出現的(例如:Math.sqrt(-1))或者嘗試將一個字符串解析成數字但失敗了的時候(例如:parseInt("blabla"))。
- NaN不等于任何值,包括它本身。
- 由于數組的indexOf方法,內部使用的是嚴格相等運算符,所以該方法對NaN不成立。
- NaN在布爾運算時被當作false。
- NaN與任何數(包括它自己)的運算,得到的都是NaN。
7. break與continue有什么區別?
- break 語句 中止當前循環,switch 語句或 label 語句,并把程序控制流轉到緊接著被中止語句后面的語句。
- continue 語句結束當前(或標簽)的循環語句的本次迭代,并繼續執行循環的下一次迭代。
8. switch case 語句中的 break 有什么作用?
- switch case 語句中的 break關鍵字會導致代碼執行流跳出switch語句,如果省略break關鍵字,就會導致執行完當前case后繼續執行下一case。
9. 遍歷數組,把數組里的打印數組每一項的平方
- 9,16,25
var arr = [3,4,5];
for(var i=0;i<arr.length;i++){
console.log(arr[i]**2);
}
10. 以下代碼輸出結果是? 為什么
- number2
(1),(typeof,a) //"number"
(2),(+,(1),b) //"number2"
(3),(>, c,0) // true
(4),(||,(2),(3)) //"number2"
(5),(=,val,(4)) //"number2" - bb undefined
(1),(==,d,5) //true
(2),(console.log(),'bb') // bb
(3),(console.log('bb') //undefined
(4),(&&,(1),(3)) // undefined
(5),(=,data,(4)) //undefinded - haha undefined
(1),(console.log(),'haha') //haha
(2),(console.log('haha') //undefined
(3),(||,0,(2)) // undefined
(4),(=,d,(3)) //undefined
(5),(=,data,(4)) //undefined - 2
(1),(!,"world") // true
(2),(!!,"from here!!") // ture
(3),(,,(1),(2)) // true
(4),(!!,"Hello") //true
(5),(+,true,true) //2
(6),(=,x,(5)) //2
11.以下代碼的輸出結果是? 為什么
- 4
首先++的優先級比+要高,所以先執行a++又a++自身是先執行后加一,所以是1+3結果為4