1. 程式人生 > >JavaScript:資料型別

JavaScript:資料型別

JavaScript中資料型別分為兩種:

1、基本資料型別

string number boolean null undefined

2、引用型別

陣列、Object、function

一、基本資料型別

二、引用型別

1、Array

Array型別有兩種定義方式:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0"
> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>陣列</title> <script> window.onload=function(){ //Array型別 //第一種使用Array建構函式 var arr=new Array(); arr[0]="1";// 陣列預設索引從0開始 arr[1]="2"; // var
arr1=new Array("a","b","c"); // 使用字面量的表示法 var arr2=[1,2,3,4,5]; // 數組裡面可以包含各種資料型別 var arr3=[1,"2",true,[1,2],{id:1}]; // 訪問陣列元素 console.log(arr3[4].id); }; </script> </head> <body> </body> </html>

 把程式碼複製到瀏覽器裡面執行結果:

2、object型別

2.1 使用建構函式的方式建立物件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>物件</title>
    <script>
       window.onload=function(){
           // object型別
           // 第一種object建構函式
           var obj=new Object();
           // 屬性
           obj.name="tom";
           obj.age=24;
           // 方法
           obj.action=function(){
                console.log("我的名字是:"+this.name+",年齡是:"+this.age);
           };
           // 輸出name屬性的值
           console.log("姓名:"+obj.name);
           // 執行方法
           obj.action();
       };
    </script>
</head>
<body>
    
</body>
</html>

執行結果:

2.2  使用字面量的方式建立物件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>物件</title>
    <script>
       window.onload=function(){
           // object型別
           // 第一種object建構函式
      /*      var obj=new Object();
           // 屬性
           obj.name="tom";
           obj.age=24;
           // 方法
           obj.action=function(){
                console.log("我的名字是:"+this.name+",年齡是:"+this.age);
           };
           // 輸出name屬性的值
           console.log("姓名:"+obj.name);
           // 執行方法
           obj.action(); */

           // 第二種字面量
           // 1、簡單字面量
           var obj1={};
           obj1.name="tom";
           obj1.age=24;
           obj1.action=function(){
               console.log("我是簡單字面量")
           };
           // 屬性
           console.log(obj1.name);
           // 方法
           obj1.action();
           // 2、巢狀字面量
           var obj2={
               name:"jack",
               age:25,
               action:function(){
                   console.log("我是巢狀字面量");
               }
           };
           // 屬性
           console.log(obj2.age);
           // 方法
           obj2.action(); 
       };
    </script>
</head>
<body>
    
</body>
</html>

 

執行結果:

2.3 使用工廠方式建立物件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>物件</title>
    <script>
       window.onload=function(){
           // object型別
           // 第一種object建構函式
      /*      var obj=new Object();
           // 屬性
           obj.name="tom";
           obj.age=24;
           // 方法
           obj.action=function(){
                console.log("我的名字是:"+this.name+",年齡是:"+this.age);
           };
           // 輸出name屬性的值
           console.log("姓名:"+obj.name);
           // 執行方法
           obj.action(); */

           // 第二種字面量
           /* // 1、簡單字面量
           var obj1={};
           obj1.name="tom";
           obj1.age=24;
           obj1.action=function(){
               console.log("我是簡單字面量")
           };
           // 屬性
           console.log(obj1.name);
           // 方法
           obj1.action();
           // 2、巢狀字面量
           var obj2={
               name:"jack",
               age:25,
               action:function(){
                   console.log("我是巢狀字面量");
               }
           };
           // 屬性
           console.log(obj2.age);
           // 方法
           obj2.action();  */

              // 第三種工廠方式
              function createObj(){
                var obj3=new Object();
                obj3.name="kevin";
                obj3.action=function(){
                     console.log("我是通過工廠方式建立的物件");
                };
                // 返回建立的物件
                return obj3;
           };
           // 引用
           var obj4=createObj();
           // 輸出屬性
           console.log(obj4.name);
           // 呼叫方法
           obj4.action();
           // 工廠方式也可以使用傳遞引數的方式
           function createObjWithPara(name,age){
               var obj5={
                   name:name,
                   age:age,
                   action:function(){
                       console.log("我是呼叫引數的工廠方式建立的物件");
                   }
               };
               //
               return obj5;
           };

           var obj6=createObjWithPara("jon",30);
           // 輸出屬性
           console.log("姓名:"+obj6.name+",年齡:"+obj6.age);
           // 呼叫方法
           obj6.action();
       };
    </script>
</head>
<body>
    
</body>
</html>

 

執行結果:

2.4  使用建構函式的方式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>物件</title>
    <script>
       window.onload=function(){
           // object型別
           // 第一種object建構函式
      /*      var obj=new Object();
           // 屬性
           obj.name="tom";
           obj.age=24;
           // 方法
           obj.action=function(){
                console.log("我的名字是:"+this.name+",年齡是:"+this.age);
           };
           // 輸出name屬性的值
           console.log("姓名:"+obj.name);
           // 執行方法
           obj.action(); */

           // 第二種字面量
           /* // 1、簡單字面量
           var obj1={};
           obj1.name="tom";
           obj1.age=24;
           obj1.action=function(){
               console.log("我是簡單字面量")
           };
           // 屬性
           console.log(obj1.name);
           // 方法
           obj1.action();
           // 2、巢狀字面量
           var obj2={
               name:"jack",
               age:25,
               action:function(){
                   console.log("我是巢狀字面量");
               }
           };
           // 屬性
           console.log(obj2.age);
           // 方法
           obj2.action();  */

      /*         // 第三種工廠方式
              function createObj(){
                var obj3=new Object();
                obj3.name="kevin";
                obj3.action=function(){
                     console.log("我是通過工廠方式建立的物件");
                };
                // 返回建立的物件
                return obj3;
           };
           // 引用
           var obj4=createObj();
           // 輸出屬性
           console.log(obj4.name);
           // 呼叫方法
           obj4.action();
           // 工廠方式也可以使用傳遞引數的方式
           function createObjWithPara(name,age){
               var obj5={
                   name:name,
                   age:age,
                   action:function(){
                       console.log("我是呼叫引數的工廠方式建立的物件");
                   }
               };
               //
               return obj5;
           };

           var obj6=createObjWithPara("jon",30);
           // 輸出屬性
           console.log("姓名:"+obj6.name+",年齡:"+obj6.age);
           // 呼叫方法
           obj6.action(); */

           // 第四種建構函式 首字母大寫,使用駝峰命名方式 相當於一個公共的方法
           function CreateObj(){
                  this.name="tom";
                  this.action=function(){
                      console.log(this.name);
                  }
           };
           // 例項化
           var obj7=new CreateObj();
           // 輸出屬性
           console.log(obj7.name);
           // 呼叫方法
           obj7.action();

       };
    </script>
</head>
<body>
    
</body>
</html>

 執行結果:

注意:建構函式的方式也可以傳遞引數。

3、function

function建立函式有以下兩種方式:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>function型別</title>
    <script>
       window.onload=function(){
           // function 型別 建立函式
           // 函式宣告
           function fun(name){
               return name;
           };
           // 函式表示式
           var fun2=function(name){
               return name;
           };
       };
    </script>
</head>
<body>
    
</body>
</html>

 

兩種方式的區別:

兩種建立函式的執行順序不同,解析器會先讀取函式宣告,函式表示式必須要等待解析器執行到相應的程式碼才會執行。看下面的程式碼

1、函式宣告的方式建立函式,建立的函式可以在函式宣告前或者函式聲明後呼叫:

函式宣告前呼叫:

函式聲明後呼叫:

2、函式表示式只能在其之後呼叫

如果在前面呼叫會直接報錯: