JavaScript中的基本型別和引用型別

2021-08-19 09:39:52 字數 2598 閱讀 9225

基本資料型別:按值訪問,可操作儲存在變數中的實際的值。基本型別值指的是簡單的資料段。

基本資料型別有這五種:undefined、null、string、number、boolean。

引用型別:

當複製儲存著物件的某個變數時,操作的是物件的引用,但在為物件新增屬性時,操作的是實際的物件。

引用型別值指那些可能為多個值構成的物件。

引用型別有這幾種:object、array、regexp、date、function、特殊的基本包裝型別(string、number、boolean)以及單體內建物件(global、math)。

對於基本型別值和引用型別值的區別:

① 引用型別值可新增屬性和方法,而基本型別值則不可以。

//

為引用型別值新增屬性

var p = new

object();

p.age=11;

alert(p.age);

//11

//為基本型別值新增屬性

var name = 'a';

name.age = 11;

alert(name.age);

//undefined

② 在複製變數值時,基本型別會在變數物件上建立乙個新值,再複製給新變數。此後,兩個變數的任何操作都不會影響到對方;而引用型別是將儲存在變數物件的值複製乙份給新變數,但是兩個變數的值都指向儲存在堆中的乙個物件,也就是說,其實他們引用了同乙個物件,改變其中乙個變數就會影響到另乙個變數。

//

基本型別值

var a = 'a';

var b =a;

a = 'b';

alert(b);

//a

引用型別值,以陣列為例:

//

引用型別值,以陣列為例

//1.對其中乙個變數直接賦值不會影響到另乙個變數(並未操作引用的物件)

var a = [1,2,3];

var b =a;

a = [1,2,3,4];

alert(a);

//1,2,3,4

alert(b); //

1,2,3

//2.使用push(操作了引用的物件)

var a = [1,2,3];

var b =a;

a.push(4);

alert(a);

//1,2,3,4

alert(b); //

1,2,3,4

傳遞引數:按值傳遞,將函式外部的值複製給函式內部的引數(乙個區域性變數),當對區域性變數進行操作時,區域性變數的變化會反應在函式外部,但是這並不會影響函式外部的值。

function

add(a)

var num = 10;

var result =add(num);

alert(num);

//10

alert(result); //

20

當然,使用物件時可能會不好理解:

function

setname(obj)

var p = new

object();

setname(p);

alert(p.name);

//a

明明引數是按值傳遞的,為什麼建立的p例項也能獲取到在setname()中新增的name屬性呢?

因為obj和p引用的是同乙個物件,即便按值傳遞,obj也會按引用來訪問同乙個物件。看一下下面的例子就能清楚了。

function

setname(obj)

var p = new

object();

var p2 =setname(p);

alert(p.name); //a

alert(p2.name); //

b

在函式內部重寫obj物件,此時obj物件引用的是乙個區域性物件,外部的p還是原始的引用,因此不會改變。

檢測型別:

typeof:確定變數是字串、數值、布林值還是undefined的最佳工具。

var num = 1;

var a = 'a';

varb;

var flag = true

;var o = null

;alert(

typeof num); //

number

alert(typeof a); //

string

alert(typeof b); //

undefined

alert(typeof flag); //

boolean

alert(typeof o); //

object

instanceof :判斷是否是某個物件型別。

var a = [1,2,3];

alert(a

instanceof object); //

true

alert(a instanceof array); //

true

alert(a instanceof regexp); //

false

JavaScript資料的基本型別

基本型別 undefined null number string boolean undefined和null型別是只有乙個值的資料型別,分別是undefined null 在使用var宣告變數但未對其加以初始化時,這個變數的值是undefined var message var name con...

重新鞏固JS(一) JavaScript基本型別

重新鞏固js系列,都是比較基礎的東西,可以進行查漏補缺,很快看完,這是第一篇。其他js重新鞏固系列 在程式設計領域中,資料型別 data type 用來將變數的值 value 進行分類,這樣在對變數的值進行數學 關係 邏輯等運算時就不會產生錯誤了。例如 2 2是合法的,2 john就不合法了。js中...

lua中的基本型別

lua是乙個動態型別的語言,沒有型別定義,每個值都有自己的型別。lua有8個基本型別,nil,boolean,number,string,userdata,function,thread,table,利用type函式可以列印出乙個給定值的型別。注意最後一行,無論x為什麼值,結果一定是string,因...