JavaScript中的數據類型總結


Javascript是一種弱類型語言,沒有明確的類型分類;網上分類的方式比較多,個人感覺不比去特別的追究細分是什么什么類型,若是能夠明確的分出類型的話,javascript就不是弱類型語言,又由於大家所使用的主體語言概念不完全相同(像C#,PHP,C語言等),分類的時候就會根絕自己的主體語言的習慣來分類,無論怎樣分類只要有助於自己的理解,能夠方便,正確靈活的使用就可以了;下面是兩是種常見的分類方式和一些必須了解的基礎用法知識;

一、第一種分類方式,也是比較常見的一種分類方法:

分為9種類型:分別是Undefined,Boolean,Object,Number,Null,String,Reference,List,Completion,其中Reference,List,Completion三種類型僅共語言解析運行時使用,無法從程序中直接訪問;下面一一介紹;

1、Undefined 類型:是全局對象window的一個特殊屬性,顧名思義就是未定義的意思;Undefined類型只有一個值Undefined,表示一個變量定義了但未賦值;

如:var a;  alert(a); // 彈出undefined;

下面是幾種常見的會出現undefined的情況:

(1)獲取一個對象的屬性(原本屬性和protoType擴展的屬性)不存在時,返回undefined;

(2)當一個函數function(){}沒有明確的返回值時,顯示undefined,例子:function way(){}  alert(way());//彈出undefined;

(3)javascript中的參數有多個形參的話,若果調用參數的話,參數數量小於形參數量,那么其他的參數值就為undefined;

2、Null類型:null是javascript保留的關鍵字,null類型也只有一個null值,表示為空或者不存在的對象引用;

(1)javascript中的if()判斷語句無論是null類型還是undefined類型他們的返回值都是false,也就是說一個變量若是null 或者undefined那么他就為false;

if (null){
   alert("sdf");//進入不了
  }
if (undefined){
   alert("sdfsdf");//進入不了
  }
var a=12;
if (a){
    alert("sdf");  //能進入
}

3、Number類型:表示數值,包含了所有的數值類型,不像高級語言那么細分成int,double,deciable,他的取值范圍是:1.7976931348623157E+308到-1.7976931348623157E+308之間,就是1.7976931348623157*10的308次方到-1.7976931348623157*10的308次方之間;Number類型有一個特殊的值NaN,他是Number類型中一個非數值的值,就像無窮大,所以NaN不等於NaN;

4、Object類型:用來表示一個對象,像String, Array,new 一個對象等,當這個對象為空時,就是null了;所以alert( typeof(null))的彈出值為object;

5、String類型:string類型是javascript中的一個比較重要的類型,它用來表示一個字符串,我們在寫腳本的時候需要處理很多的字符串,所以javascript庫中也提供了很多字符串處理方法,網上已有很多資料了,這里就不一一細說了;

6、Boolean類型:布爾類型大家都很熟悉,這里說幾個他的特殊用法:(1)boolea類型和Number類型相結合時,true轉化為1,false轉化為0;

var a = true;
        alert(a+1);//彈出2
var a = true;
        alert(a);//彈出true

上述六種類型也可以相互轉化,基本上是數值和字符串和布爾值之間的轉化:

(1)       Number類型轉化為string類型,用tostring();

(2)       String類型轉化為Number,用Number();

var str = "123";
var num = 1;
alert(str + num);//彈出1231
alert(Number(str)+num) //彈出124

也可以使用全局函數parseInt()和parseFloat()來進行轉換;parseInt()和parseFloat()的區別是Number()轉換是整個值,而parseInt()和parseFloat()則可以只轉換開頭的數字部分。

alert(Number("123asdf"));//彈出NaN
alert(Number("1.2.3"))//彈出NaN
alert(parseInt("123sdf"));//彈出123
alert(parseFloat("sdfsdf"));//彈出NaN
alert(parseInt("sdf345"))//彈出NaN

Number()在轉化的過程中布爾類型的true和false分別被轉化為1和0其他的不能轉化為數值的全部轉化NaN。

alert(Number(true));//彈出1
 alert(Number(false));//彈出0
alert(Number(null));//彈出0

其他的若是不能轉化為數值類型的,基本上全轉化為NaN;

擴展小知識:(1)判斷一個變量是否是數值,用IsNan()方法;

                 (2)在javascript中==和===的區別: "==" 只要求值相等; "===" 要求值和類型都相等;

                 (3)instanceof只是用於判斷object是否是class類的一個實例,是的話返回true,否則返回false;alert(a instanceof String);

二、第二種分類方法:用typeof()關鍵字來分類,可以分為:undefined,number,string,boolean,object,function

   

類型

例子

運行結果

Undefined

var a1; alert(typeof(a1));

function way{}  alert(way()); alert(typeof(way()))

undefined

number

Var num1=12; alert(typeof(num1));

number

string

Var num2=”12”; alert(typeof(num2));

string

boolean

Var flag=true; alert(typeof(flag));

boolean

object

Var str=new string(); alert(typeof(str));

Var a=null; alert(typeof(a));

object

function

alert(typeof(String));

function


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM