JS學習筆記(一)

JS——數據類型

       js有六種數據類型,分別是五種基本數據類型(number、boolen、string、undefined、null)和一種複雜類型(object);

        類型查看方式:typeof 操作符  typeof(xx);

        注:對null類型數據進行typeof後,返回的是object類型,因爲null被當做了一個空對象引用;

1、Number類型

    number類型包含整數和浮點數兩種值(浮點數需以x.x形式展現)、極大或極小的數字可以用科學(指數)計數法來寫(例: var a = 123e5;)。

    NaN:非數字類型。特點:①涉及到的任何關於NaN的操作都會返回NaN;②NaN不等於自身。

    NaN:即非數值(Not a Number)是一個特殊的值,這個數值表示本來要返回數值的操作未返回數值的情況(這樣就不會拋出錯誤了);

    isNaN()函數用於檢查其參數是否是非數字值,在收到一個值時,它會首先嚐試將這個值轉換成數值。

isNaN(123); //false
isNaN("hello") //true
isNaN("123")  //false "123"是一個字符串,但可以轉換成數值

2、Boolen類型

    該類型只有true和false兩個值。

3、string類型

    字符串有length屬性。

    字符串轉換:轉型函數String(),適用於任何數據類型(null,undefined轉換後爲null和undefined);

                        toString()方法(注:null和undefined沒有toString()方法)。

4、Undefined類型

    只有一個值,即undefined值。使用var聲明瞭變量,但未給變量初始化值,那麼這個變量值就是undefined。

5、Null類型

    null類型被看做空對象指針,前文說道null類型也是空的對象引用。

6、Object類型

    js中對象是一組屬性與方法的集合。這裏就要說道引用類型了,引用類型是一種數據結構,用於將數據和功能組織在一起。引用類型有時候也被稱爲對象定義,因爲他們描述的是一類對象所具有的屬性和方法

三大引用類型

1、Object類型

    我們所看到的大多數類型值都是Object類型的實例。創建Object實例的方式有兩種。

    第一種:使用new操作符跟Object構造函數,如下:

var person = new Object();
person.name = "Elaine";
person.age = 20;

    第二種:使用對象字面量表示法(json),如下:

var person = {
    name:"Elaine";
    age:24;
};

2、Array類型

    數組的每一項可以用來保存任何類型的數據,也就是說,可以用數組的第一個位置來保存字符串,第二個位置保存數值,第三個位置保存對象...另外,數組的大小是可以動態調整的。

    創建數組的基本方式:

    第一組:使用Array構造函數,例如 :

var colors = new Array("red","blue","yellow");

    第二組:使用數組字面量表示法,例如:

var colors = ["red","blue","yellow"];

3、Function類型

每個函數都是Function類型的實例,而且都與其他引用類型一樣具有屬性和方法。函數通常是使用函數聲明語法定義的,例如:

function sum(a,b){
      return a+b;
};

這和使用函數表達式定義函數的方式相差無幾:

var sum = function(){
      return a+b;
};

js按照存儲方式分爲值類型和引用類型,它們在計算上有何區別?

舉例說明:

題目1: var a = 100;
    var b = a;
      a = 200;

    console.log (b);


題目2: var a = {age : 20};
    var b = a;
    b.age = 21;
    console.log (a.age);

    題目1的答案是 100,題目2的答案是21;

        題目1是簡單的值類型,在從一個變量向另一個變量賦值基本類型時,會在該變量上創建一個新值,然後再把該值複製到爲新變量分配的位置上。此時,a中保存的值爲 100 ,當使用 a 來初始化 b 時,b 中保存的值也爲100,但b中的100與a中的是完全獨立的,該值只是a中的值的一個副本,此後,這兩個變量可以參加任何操作而相互不受影響。也就是說基本類型在賦值操作後,兩個變量是相互不受影響的即操作對象是值。


       題目2是引用類型,當從一個變量向另一個變量賦值引用類型的值時,同樣也會將存儲在變量中的對象的值複製一份放到爲新變量分配的空間中。這時保存在變量中的是對象在堆內存中的地址,所以,與簡單賦值不同,這個值的副本實際上是一個指針,而這個指針指向存儲在堆內存的一個對象。那麼賦值操作後,兩個變量都保存了同一個對象地址,則這兩個變量指向了同一個對象。因此,改變其中任何一個變量,都會相互影響。因此,引用類型的賦值其實是對象保存在棧區地址指針的賦值,因此兩個變量指向同一個對象,任何的操作都會相互影響。即操作對象是指向值的指針


說明:此文章僅是自己學習js的筆記,僅用作學習用途,如有錯誤,歡迎指正。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章