-
JavaScript 定義了幾種數據類型? 哪些是簡單類型?哪些是復雜類型?
定義了六種數據類型:
1.)數值(number):整數和小數(比如1和3.14)
2.)字符串(string):字符組成的文本(比如“Hello World”)
3.)布爾值(boolean):true
(真)和false
(假)兩個特定值
4.)undefined:表示“未定義”或不存在,即使此處目前沒有任何值
5.)null: 表示空缺,即此處應該有一個值,但目前為空
6.)對象(object):各種植組合成的集合簡單類型:number、string、boolean、undefined、null;
復雜類型(complex type)的值,因為一個對象往往是多個原始類型的值的合成,可以看作是一個存放各種值的容器:object;
-
NaN、undefined、null分別代表什么?
-
NaN:Not a Number.這個數值用于本來要返回一個數值,但是卻未能返回一個數值的情況,以防止報錯。(即是計算發生錯誤時的一種狀態,也是number類型的數據);
- NaN特點:
1.)任何涉及NaN的操作都會返回NaN,(NaN報錯!)
2.)NaN對任何值都不想等,包括自己NaN本身。針對NaN特性,JS內置了is NaN()函數,來確定數值是不是NaN類型。
3.)Number 浮點數值的最高精度是17位小數
4.)isNaN()來判斷這個數字是不是NaN,包含著隱式類型轉換Number().
NaN例子:
(1)一個表達式中如果有減號(-)、乘號(*)、或除號(/)等運算時,JS引擎會在計算之前試圖將運算符兩邊的變量轉化為number類型,如果轉化失敗,表達式將返回NaN。
(2)直接使用parseInt,parseFloat或Number將一個非數字轉化為數字時,表達式返回NaN: - NaN特點:
Number('abc') //NaN
parseInt('abc') //NaN
parseFloat('abc') //NaN
(3)用isNaN()來判斷某一個變量是不是數字或能否轉化為數字:
isNaN(123) // false
isNaN("123") // false
isNaN('abc') //true
isNaN('ab3') //true
- undefined:只有一個值,也就是undefined。undefined意為未定義,即當使用var聲明了變量但未進行賦值時,這個變量的值就是undefined。
undefined產生的原因有兩種:
(1)訪問對象不存在的屬性或方法
(2)聲明了變量但沒有賦值
和NaN不同的是,undefined雖然也代表變量的一個狀態,但這個狀 態值是確定唯一的,即當一個變量聲明了但沒有賦值時,它的狀態就是undefined。
- null: 也只有一個值,表示一個變量中沒有包含有效數據。null在這里意為空值、空的意思,更確切的說,一個被賦值為null的變量沒有保存有效的數值、字符串、布爾、數組或對象等,可以通過給一個變量賦值為null來清空變量中的內容。產生null的原因只有一個:即對一個變量顯示的賦值為null。
例子
和NaN來比較,null也是一個確切唯一的狀態值,當一個變量被賦值為null時,那么它就和null相等。
-
typeof和instanceof的作用和區別?
- typeof是一元運算符,返回值為字符串,該字符串用來說明運算數的數據類型。
- 用來獲取運算數的數據類型。返回的值有number、boolean、undefined、function、object、string。
- number:數字會返回number類型
- boolean:boolean值只有true和false
- undefined:當變量未被聲明時會返回undefined,這與
var name;alert(name);
是不一樣的。后者是指變量已聲明,但未被初始化。 - function:當運算數為函數時,返回function
- obeject:對象、數組、null使用typeof一律返回object。這正是typeof的局限性。
** 如果我們想要獲取一個對象是否是數組,或判斷某個變量是否是某個對象的實例則要選擇使用instanceof**
- instanceof用于判斷某個變量是否是某個對象的實例,返回值為true或false。
代碼題
- 完成如下代碼判斷一個變量是否是數字、字符串、布爾、函數
function isNumber(el){
return typeof el === "number'
}
function isString(el){
return typeof el === "string"
}
function isBoolean( el ) {
return typeof el === "boolean"
}
function isFunction( el ){
return typeof el === "function"
}
- 以下代碼的輸出結果是?
3.以下代碼的輸出結果是?
4.下面代碼的輸出是? 為什么
第一個undefined ,雖然下面已經聲明,但還沒有賦值,所以為undefined;
第二個為1,是因為已經賦值
a = 1;
第三個報錯,因為b沒有被聲明,所以報錯。
文章著作權歸饑人谷_sunny和饑人谷所有,轉載須說明來源