中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

javascript中有哪些類型

發布時間:2022-09-30 16:05:50 來源:億速云 閱讀:123 作者:iii 欄目:web開發

這篇“javascript中有哪些類型”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“javascript中有哪些類型”文章吧。

有9種數據類型:1、字符串類型,是一段以引號包裹起來的文本;2、數值類型,用來定義數值;3、布爾類型,只有兩個值;4、Null類型,表示一個“空”值,即不存在任何值;5、Undefined類型,表示未定義;6、Symbol類型,表示獨一無二的值;7、對象類型,是一組由鍵、值組成的無序集合;8、數組類型,是一組按順序排列的數據的集合;9、函數類型,是一段具有特定功能的代碼塊。

本教程操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

數據類型指的是可以在程序中存儲和操作的值的類型,每種編程語言都有其支持的數據類型,不同的數據類型用來存儲不同的數據,例如文本、數值、圖像等。

JavaScript 是一種動態類型的語言,在定義變量時不需要提前指定變量的類型,變量的類型是在程序運行過程中由 JavaScript 引擎動態決定的,另外,您可以使用同一個變量來存儲不同類型的數據,例如:

var a;  // 此時 a 為 Undefined
a = "http://c.biancheng.net/"; // 此時 a 為 String 類型
a = 123;  // 此時 a 為 Number 類型

JavaScript 中的數據類型可以分為兩種類型:

  • 基本數據類型(值類型):字符串(String)、數字(Number)、布爾(Boolean)、空(Null)、未定義(Undefined)、Symbol;

  • 引用數據類型:對象(Object)、數組(Array)、函數(Function)。

提示:Symbol 是 ECMAScript6 中引入的一種新的數據類型,表示獨一無二的值。

1、String 類型

字符串(String)類型是一段以單引號''或雙引號""包裹起來的文本,例如 '123'、"abc"。需要注意的是,單引號和雙引號是定義字符串的不同方式,并不是字符串的一部分。

2、Number 類型

數值(Number)類型用來定義數值,JavaScript 中不區分整數和小數(浮點數),統一使用 Number 類型表示

注意:Number 類型所能定義的數值并不是無限的,JavaScript 中的 Number 類型只能表示 -(2∧53 - 1) 到 (2∧53 -1) 之間的數值。

3、Boolean 類型

布爾(Boolean)類型只有兩個值,true(真)或者 false(假),在做條件判斷時使用的比較多,您除了可以直接使用 true 或 false 來定義布爾類型的變量外,還可以通過一些表達式來得到布爾類型的值

4、Null 類型

Null 是一個只有一個值的特殊數據類型,表示一個“空”值,即不存在任何值,什么都沒有,用來定義空對象指針。

使用 typeof 操作符來查看 Null 的類型,會發現 Null 的類型為 Object,說明 Null 其實使用屬于 Object(對象)的一個特殊值。因此通過將變量賦值為 Null 我們可以創建一個空的對象。

5、Undefined 類型

Undefined 也是一個只有一個值的特殊數據類型,表示未定義。當我們聲明一個變量但未給變量賦值時,這個變量的默認值就是 Undefined。

6、Symbol 類型

Symbol 是 ECMAScript6 中引入的一種新的數據類型,表示獨一無二的值。

Symbol值通過Symbol函數生成。對象的屬性名可以有兩種類型,一種是原來就有的字符串,另一種就是新增的 Symbol 類型。屬性名屬于 Symbol 類型的,都是獨一無二的,可以保證不會與其他屬性名產生沖突。

let s1=Symbol()
let s2=Symbol()
console.log(s1)
//Symbol()
console.log(s2)
//Symbol()
console.log(s1===s2)
//false

//Symbol函數能接受字符串作為參數,表示對Symbol實例的描述
let s1=Symbol('xxx')
let s2=Symbol('hhh')
console.log(s1)
//Symbol(xxx)
console.log(s2)
//Symbol(hhh)
console.log(s1===s2)
//false復制代碼

Symbol函數前不能使用new命令,會報錯。這是因為生成的 Symbol 是一個原始類型的值,不是對象。也就是說,由于 Symbol 值不是對象,所以不能添加屬性。相當于是一種特殊的字符串。

應用場景

  • 作為屬性名

由于 Symbol 值都是不相等的,這意味著 Symbol 值可以作為標識符,用在對象的屬性名,就能保證不會出現同名的屬性。這對于一個對象由多個模塊構成的情況非常有用,防止某一個鍵被不小心改寫或覆蓋。

const grade={
    張三:{address:'qqq',tel:'111'},
    李四:{address:'aaa',tel:'222'},
    李四:{address:'sss',tel:'333'},
}
console.log(grade)
//張三: {address: "qqq", tel: "111"} 李四: {address: "sss", tel: "333"}
//對象的key值不能重復 如果有重復 后面的value值就會覆蓋前面的


//使用Symbol解決,相當于一個獨一無二的字符串
const stu1=Symbol('李四')
const stu2=Symbol('李四')
console.log(stu1===stu2)
//false
const grade={
    [stu1]:{address:'aaa',tel:'222'},
    [stu2]:{address:'sss',tel:'333'},
}
console.log(grade)
//李四:{address:'sss',tel:'222'} 李四:{address:'sss',tel:'333'}
console.log(grade[stu1])
//李四:{address:'sss',tel:'222'}
console.log(grade[stu2])
//李四:{address:'sss',tel:'333'}

  • 屬性遍歷

const sym=Symbol('imooc')
class User{
    constructor(name){
        this.name=name
        this[sym]='imooc.com'
    }
    getName(){
        return this.name+this[sym]
    }
}
const user=new User('www')

//for in的方法不能遍歷到Symbol屬性 像被隱藏了
for(let key in user){
    console.log(key)//name 
}

//Object.keys(obj)方法也不能遍歷到Symbol屬性
for(let key of Object.keys(user)){
    console.log(key)//name 
}

//Object.getOwnPropertySymbols(obj)只能獲取到Symbol屬性
for(let key of Object.getOwnPropertySymbols(user)){
    console.log(key)//Symbol(imooc) 
}

//Reflect.ownKeys(obj)對象的屬性都能獲取到
for(let key of Reflect.ownKeys(user)){
    console.log(key)
    //name 
    //Symbol(imooc) 
}

  • 消除魔術字符串

魔術字符串指的是,在代碼中多次出現、與代碼形成強耦合的某一個具體的字符串或者數值。風格良好的代碼,應該盡量消除魔術字符串,改成一些含義清晰的變量代替。

function getArea(shape) {
    let area = 0
    switch (shape) {
        case 'Triangle':
            area = 1
            break
        case 'Circle':
            area = 2
            break
    }
    return area
}
console.log(getArea('Triangle'))
//Triangle和Circle就是魔術字符串。多次出現,與代碼形成了“強耦合”,不利于后面的修改和維護。

const shapeType = {
    triangle: Symbol(),
    circle: Symbol()
}

function getArea(shape) {
    let area = 0
    switch (shape) {
        case shapeType.triangle:
            area = 1
            break
        case shapeType.circle:
            area = 2
            break
    }
    return area
}
console.log(getArea(shapeType.triangle))

7、Object 類型

Object數據類型,稱為對象,是一組由鍵、值組成的無序集合。可以用new操作符后跟要創建的對象類型的名稱來創建。也可以用字面量表示法創建。在其中添加不同名(包含空字符串在內的任意字符串)的屬性。

1)構造對象

使用 new 運算符調用構造函數,可以構造一個實例對象。具體用法如下:

var objectName = new functionName(args);

參數說明如下:

  • objectName:返回的實例對象。

  • functionName:構造函數,與普通函數基本相同,但是不需要 return 返回值,返回實例對象,在函數內可以使用 this 預先訪問。

  • args:實例對象初始化配置參數列表。

示例

下面示例使用不同類型的構造函數定義各種實例。

var o = new Object();  //定義一個空對象

var a = new Array();  //定義一個空數組

var f = new Function();  //定義一個空函數

2)對象直接量

使用直接量可以快速創建對象,也是最高效、最簡便的方法。具體用法如下:

var objectName = {
    屬性名1 : 屬性值1,
    屬性名2 : 屬性值2,
    ...
    屬性名n : 屬性值n
};

在對象直接量中,屬性名與屬性值之間通過冒號進行分隔,屬性值可以是任意類型的數據,屬性名可以是 JavaScript 標識符,或者是字符串型表達式。屬性于屬性之間通過逗號進行分隔,最后一個屬性末尾不需要逗號。

在 JavaScript 中,對象類型的鍵都是字符串類型的,值則可以是任意數據類型。要獲取對象中的某個值,可以使用對象名.鍵的形式,如下例所示:

var person = {
    name: 'Bob',
    age: 20,
    tags: ['js', 'web', 'mobile'],
    city: 'Beijing',
    hasCar: true,
    zipcode: null
};
console.log(person.name);       // 輸出 Bob
console.log(person.age);        // 輸出 20

8、Array 類型

數組(Array)是一組按順序排列的數據的集合,數組中的每個值都稱為元素(Element),每個元素的名稱(鍵)被稱為數組下標(Index)。數組的長度是彈性的、可讀寫的。

數組中可以包含任意類型的數據。

在 JavaScript 中定義(創建或者聲明)數組的方法有兩種:構造數組和數組直接量。

1)構造數組

使用 new 運算符調用 Array() 類型函數時,可以構造一個新數組。

示例:

  • 直接調用 Array() 函數,不傳遞參數,可以創建一個空數組。

var a = new Array();  //空數組

  • 傳遞多個值,可以創建一個實數組。

var a = new Array(1, true, "string", [1,2], {x:1,y:2});  //實數組

每個參數指定一個元素的值,值得類型沒有限制。參數的順序也是數組元素的順序,數組的 length 屬性值等于所傳遞參數的個數。

  • 傳遞一個數值參數,可以定義數組的長度,即包含元素的個數。

var a = new Array(5);  //指定長度的數組

參數值等于數組 length 的屬性值,每個元素的值默認值為 undefined。

  • 如果傳遞一個參數,值為 1,則 JavaScript 將定義一個長度為 1 的數組,而不是包含一個元素,其值為 1 的數組。

var a = new Array(1);
console.log(a[0]);

2)數組直接量

數組直接量的語法格式:在中括號中包含多個值列表,值之間用逗號分隔。

下面代碼使用數組直接量定義數組。

var a = [];  //空數組
var a = [1, true, "0", [1,0], {x:1,y:0}];  //包含具體元素的數組

推薦使用數組直接量定義數組,因為數組直接量是定義數組最簡便、最高效的方法。

9、Function 類型

函數(Function)是一段具有特定功能的代碼塊,函數并不會自動運行,需要通過函數名調用才能運行,如下例所示:

function sayHello(name){
    return "Hello, " + name;
}
var res = sayHello("Peter");
console.log(res);  // 輸出 Hello, Peter

此外,函數還可以存儲在變量、對象、數組中,而且函數還可以作為參數傳遞給其它函數,或則從其它函數返回,如下例所示:

var fun = function(){
    console.log("http://c.biancheng.net/js/");
}
function createGreeting(name){
    return "Hello, " + name;
}
function displayGreeting(greetingFunction, userName){
    return greetingFunction(userName);
}
var result = displayGreeting(createGreeting, "Peter");
console.log(result);  // 輸出 Hello, Peter

以上就是關于“javascript中有哪些類型”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邵武市| 东阿县| 漾濞| 金塔县| 论坛| 茂名市| 民县| 峨边| 广水市| 永和县| 衡东县| 都安| 胶南市| 广西| 宁波市| 东安县| 油尖旺区| 罗甸县| 南漳县| 宜章县| 招远市| 广东省| 石棉县| 中宁县| 马关县| 武安市| 额敏县| 彭州市| 大渡口区| 南丹县| 如皋市| 行唐县| 玛纳斯县| 田林县| 南康市| 南宫市| 察雅县| 陆河县| 黄骅市| 汝城县| 额敏县|