JS資料型別

2021-09-24 08:25:45 字數 4065 閱讀 2386

js的資料型別主要分為兩大類:基本資料型別與引用資料型別,下面我們會圍繞這兩大資料型別進行說明和擴充套件

string(字串型別)

用於儲存字元變數,可以用單引號和雙引號包裹

// 定義字串變數

var str = 'zhangl';

// 不可變性

str.slice(1); // 'hangl'

console.log(str); // 'zhangl'

// 判斷型別

console.log(typeof str); // "string"

複製**

number(數字型別)

js中只有一種數字型別,既可以使用儲存整數,也可以儲存浮點數

// 定義數字變數

var numint = 123;

var numfloat = 123.00;

// 只有一種資料型別

console.log(typeof numint); // "number"

console.log(typeof numfloat); // "number"

複製**

boolean(布林型別)

只有兩個值true(真)或false(假)

// 定義布林變數

var booltrue = true;

var boolfalse = false;

// 定義乙個true, false以外的值

var isboolvalue = 123;

console.log(typeof booltrue); // "boolean"

console.log(typeof boolfalse); // "boolean"

console.log(typeof isboolvalue === 'boolean'); // false

複製**

null

表示乙個空值

// 定義null變數

var nulldata = null;

// 這裡使用tostring判斷是否是null型別

console.log(object.prototype.tostring.call(nulldata)); // "[obejct null]"

複製**

使用typeof判斷null不準確,會返回object,原因是js在底層儲存變數時,會以二進位制的形式儲存,二進位制的前三位表示資料型別,物件型別的前三位為0,null的二進位製碼全部都為0,從而導致了typeof在判斷時,將null誤判斷為物件型別資料

[000:物件; 010:浮點數; 100:字串; 110:布林; 1:整數]

undefined

表示乙個變數被宣告,但未賦值(沒有值)

// 宣告undefined變數

var undefineddata;

console.log(typeof undefineddata); // "undefined"

複製**

symbol(es6推出的一種唯一且不可變的資料型別)

使用場景:

// 建立symbol變數

var s1 = symbol('name');

var s2 = symbol('name');

// 判斷型別

console.log(typeof s1); // "symbol"

// 比較兩個description都為'name'的變數

console.log(s1 === s2); // false

// 比較兩個變數的description

console.log(s1.description === s2.description); // true => 'name' === 'name'

// 獲取symbol值

var value1 = symbol.for('name');

var value2 = symbol.for('name');

console.log(value1 === value2); // true

// 私有屬性(不能被外界獲取到)

var obj = {};

obj[symbol('name')] = 'zhangl';

obj[symbol('age')] = 18;

for (var key in obj)

// 防止物件重名屬性汙染

// 普通物件屬性,前面的會被後面的覆蓋

var obj2 = {};

obj2[symbol('name')] = 'zhangl';

obj2[symbol('name')] = 'zhoul';

console.log(obj2)//

複製**

注:es10新推出了乙個bigint型別,用於處理超過number.max_safe_integer的數

基本資料型別記憶體圖

// 基本資料型別複製,是重新開闢乙個新的空間儲存新變數

var str1 = 'zhangl';

var str2 = str2;

複製**

object(物件型別)

表示一組無序的集合

// 定義乙個物件

var obj = {};

obj['name'] = 'zhangl';

obj['age'] = 18;

obj['gender'] = 'man';

// 判斷型別

console.log(object.prototype.tostring.call(obj)); // "[object object]"

console.log(obj.name); // 'zhangl'

// obj的引用賦值給obj2

var obj2 = obj;

// 改變obj2引用的堆空間值,obj引用的堆空間值也發生相應的改變

obj2.name = 'zhoul';

console.log(obj.name); // 'zhoul'

console.log(obj2.name); // 'zhoul'

複製**

array(陣列型別)

表示一組有序的,型別相同(js中能儲存不同型別的資料)的集合

// 定義乙個陣列

var arr = ;

// 新增元素

for (var i = 0; i < 5; i++)

// 判斷型別

console.log(object.prototype.tostring.call(arr)); // "[object array]"

console.log(arr); // [0, 1, 2, 3, 4];

// arr的引用賦值給arr2

var arr2 = arr;

// 改變arr2的長度,檢視arr的長度

arr2.length = 2;

console.log(arr.length); // 2

console.log(arr2.length) // 2

複製**

function(函式型別)
// 宣告函式

function

fn1()

// 判斷型別

console.log(typeof fn1); // "function"

// 定義函式

var fn2 = fn1;

// 給fn2新增name屬性,檢視fn1

fn2.age = 18;

console.log(fn1.age); // 18

console.log(fn2.age); // 18

複製**

引用資料型別記憶體圖
var obj1 = ;

var obj2 = obj1;

複製**

js資料型別

一.原始資料型別 1.typeof 運算子。var a alert typeof a 輸出結果為 undefined 2.undefined 未定義 型別 當變數未定義時,該變數值被預設為undefined 如 var a alert typeof a 輸出結果為 undefined 注意值unde...

js資料型別

js 基本資料型別 undefined null boolean number string js 操作符 typeof檢測給定變數的資料型別。返回值表示的型別 undefined 值未定義。boolean 值為布林型別。string 值為字串。number 值為數字。object 值為物件或nul...

js資料型別

var num 1,boo true,aa null,bb,str mary arr 1,2,4,8 obj arrnew new array 1,2,3 strnew new string 1,2,3 用 typeof 檢測變數的型別 console.log number typeof num n...