首頁 > web前端 > 前端問答 > 詳細解析JavaScript中的六大基本資料類型

詳細解析JavaScript中的六大基本資料類型

WBOY
發布: 2021-12-29 18:16:55
轉載
2377 人瀏覽過

本篇文章為大家帶來了JavaScript中關於六大基本資料類型的相關知識,希望對大家有幫助。

詳細解析JavaScript中的六大基本資料類型

一、區分大小寫

在JavaScript中,所有的一切(變數、函數和運算元)都會區分大小寫。這也意味著,變數名test和變數名Test分別表示兩個不同的變數。

二、標識符

所謂的表示標識符,就是指變數、函數名稱和操作符,或是函數的參數。標誌符的格式規則如下:

1、第一個字元必須是字元、底線(_)或一個美元符號($);

2、其他的字元可以是字母、底線、美元符號和數字;

依照慣例,JavaScript的識別碼採用小駝峰書寫格式,也就是打開一個字母小寫,剩下的單字的首字母大寫。例如:firstChirld、myCar;

當然,識別碼採用小駝峰書寫格式不是強制要求,但是可以便於我們理解程式碼,在書寫時盡量用小駝峰書寫格式,便於別人理解你的程式碼。

三、註解

JavaScript中的註解方法分為單行註解和多行註解:
單行註解:

//这是一个单行注释
登入後複製

多行註解:

/*
*这是一个
*多行注释
*/
登入後複製

四、語句

在JavaScript中,語句都是以一個分號結尾;如果省略分號,則由解釋器去確定結尾。如下例所示:

var sum = a + b			//即使没有分号也是有效语句——不推荐
var diff = a - b;		//有效语句——推荐
登入後複製

五、變數

JavaScript中的變數型別是弱型別的,所謂弱型別就是可以用來保存任何型別的資料。換句話說,每個變數只是一個用來保存值的佔位符而已。
定義變數時用var關鍵字,後面跟著變數名稱(即標識符)。如下所示:

var  message;
登入後複製

JavaScript也支援直接初始化變量,因此在定義變數的同時就可以設定變數的值。如下所示:

var message = "Hello world!";
登入後複製

有一點必須注意,即用var關鍵字定義的變數將成為定義該變數的作用域中的局部變數。也就是說,如果函數中使用var定義一個變量,那麼這個變數在函數運行結束後就會被銷毀。例如:

function test(){
	var message = "Hello";		//局部变量
}
test();
console.log(message);		//错误!
登入後複製

出現錯誤的原因是,變數message是在函數test()中使用var定義的。當函數被呼叫時,就會建立變數並為其賦值。而在此之後,這個變數會立即銷毀,因此,範例中的下一行程式碼就會導致錯誤。不過,可以像下面這樣省略關鍵字var,從而創建一個全域變數:

function  test(){
	message = "Hello";			//全局变量
}
test();
console.log(message);			//"Hello"
登入後複製

在這裡省略了關鍵字var,message就變成了全域變數。這樣,只要呼叫一次test()函數,這個變數就被定義了,全域變數被定以後,就可以在函數外部的任何地方都可以被存取。
雖然省略關鍵字var可以定義全域變量,但不建議這樣做,因為在局部作用域中定義的全域變數很難維護;

資料型別

##JavaScript中有幾種簡單資料類型(也稱為基本資料類型):Undefined、Null、Boolean、Number和String。還要一種複雜型別-Object,Object本質就是一組無序的名值對組成。 JavaScript中不支援任何建立自訂的類型的機制,而所有值都是這6種資料類型之一。

typeof運算子

由於JavaScript是弱型別的,因此需要有一種手段來偵測給定變數的資料型別-typeof就是一個負責偵測給定變數的資料型別的運算符。對一個值使用typeof運算子可能會傳回下列某個字串:

  • 「undefined」-如果這個值未定義;

  • 「boolean」-如果這個值是布林型別;

  • 「string」-如果這個值是字串;

  • 「number 」——如果這個值是數字;

  • 「object」——如果這個值是物件或null;

  • 「function」— —如果這個值是函數;

下面是使用typeof運算子的幾個例子:


var message = "hello";
console.log(typeof message);			//"string"
console.log(typeof(message));			//"string"
console.log(typeof 95);					//"number"
登入後複製
typeof運算子的運算元可以是變數,也可以是數值字面量。注意,typeof不是函數,因此此例中的圓括號儘管可以使用,但是不是必需的。

在JavaScript中,函數是一種對象,不是一種資料類型,因此使用typeof來區分函數和其他物件是必要的。

Undefined型別

undefined型別只有一個值,即特殊的undefined。在使用var宣告變數但對其未加以初始化時,這個變數的值就是undefined。例如:

var message;
console.log(message  == undefined);		//true
var message1 = "undefined";
console.log(message1 == undefined);			//true
登入後複製
然而,令人困惑的一點是:對未初始化的變數執行typeof操作符會傳回undefined值,而對未宣告的比變數執行typeof操作符同樣也會傳回undefined值。來看下面的範例:

var message;			//这个变量声明之后默认取得了undefined值
//下面这个变量并没有声明
//var age;
console.log(typeof message);		//"undefined"
console.log(typeof age);			//"undefined"
登入後複製
為初始化的變數和宣告的變數都回傳了undefined,這個結果有其邏輯上的合理性。因為這兩種變數從技術角度上有本質上的區別,但實際上無論對那種變數也不可能執行真正的操作,

Null类型

Null类型是第二个只有一个值得类型,这个特殊的值是null。从逻辑的角度来看,null值表示一个对象的空指针,而这也正是使用typeof操作符的检测null值时会返回“object”的原因,如下面的例子所示:

var message= null;		
console.log(message);		//"object"
登入後複製

如果定义的对象将来用来保存对象,那么最好将这个变量初始化为null而不是其他的值。这样一来,只要直接检查null值就可以直接知道相应的变量是否已经保存了一个对象的引用,如下面的例子:

if(message != null){
	//对message进行一系列的操作
}
登入後複製

实际上,undefined的值是派生自null值得,所以对它们进行相等性测试的时候要返回true:

console.log(null == undefined);		//true
登入後複製

在这里,位于null和undefined之间的相等操作符(==)总是返回true。尽管null和undefined有这样的关系,但它们的的用途完全不同。如上面所述,无论在什么情况下,都没有必要把一个变量显示的表示为undefined,可是同样的规则对null却不适用。换句话说,只有保存对象的变量还没有真正的保存对象,就应该在明确地表示将该变量保存为null值。这样做不仅可以体现null值作为空指针的惯例,而且也有助于进一步的区分null和undefined。

Boolean类型

Boolean类型是JavaScript中使用最多的一种类型,该类型只有两个字面值:true和false。这两个值与数字值不是一回事,因此true不一定等于1,而false也不一定等于0。以下是为变量赋值的例子:

var first = true;
var second = false;
登入後複製

需要注意的是,boolean类型的两个值区分大小写。也就是说True和true、False和false不是一回事。
True和False(以及其他混合大小形式)只是标识符,不是boolean值。
虽然boolean值只有两个值,但是JavaScript所有类型的值都有与这两个boolean值等价的值。要将一个值转换为相应的Boolean值,可以调用Boolean()函数。例如:

	var message = "Hello world!";
	var messageAsBoolean = Boolean(message);
	console.log(messageAsBoolean);		//true
登入後複製

可以对任何类型的值调用Boolean()函数,而且总会返回一个boolean值。至于返回的是true还是false取决于要转换的实际类型及其实际值。下表给出了各种数据类型对其转换的相应规则:

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 “”(空字符串)
Number 任何非零数字值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined n/a undefined

Number类型

在JavaScript中number类型定义了不同的数值字面量格式。例如:

	var  intNumber = 55;		//十进制整数
	var octalNum1 = 070;		//八进制的56
	var octaNum2 = 079;			//无效的八进制数,解析为79
	var octaNum3 =  08;			//无效的八进制数,解析为8
	var hexNum1 = 0xA;			//十六进制的10
	var hexNum2 = 0x1f;			//十六进制的31
登入後複製

在进行算术计算时,所有八进制和十六进制表示的数值都会转换成十进制数值。

NaN

NaN即非数值,是一个特殊的数值。这个数用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。NaN本身有两个特点:
首先,任何涉及NaN的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。
其次,NaN与任何值都不相等,包括NaN本身。例如:

console.log(NaN ==NaN );		//false
登入後複製

String类型

string类型用于表示零或多个Unicode字符组成的字符序列,即字符串。字符串可以由双引号(")或单引号(’)表示,因此下面两种写法都是有效的:

var firstName = "王文正";
var secondName = "王彬";
登入後複製

双引号开头的必须以双引号结尾,而当引号开头的必须以单引号结尾。下面这种会导致语法错误:

var name = "王彬';		//语法错误
登入後複製
字符字面量

String类型中包含了一些特殊字面量,也叫转义序列,用于表示非打印字符,或者有其他的用途的字符。这些字符字面量如下表所示:

字面量 含义
\n 换行
\t 制表
\b 退格
\r 回车
\f 进纸
\ 斜杠
单引号
" 双引号
\xnn 以十六进制代码nn表示一个字符
\unnn 以十六进制代码nnn表示一个Unicode字符
字符串的特点

JavaScript中的字符串是不可变的,也就是说,字符串一旦创建,它的值就是不可更改的。要更改某个变量中保存的字符串,首先要销毁原来的字符串,然后用另一个包含新值得字符串填充变量,例如:

var lang = "java";
lang = lang + "script";
console.log(lang);		//javascript
登入後複製

Object类型

JavaScript中的对象是一组数据和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型名称来创建。而创建Object类型的实例并为其添加属性或方法,就可以创建自定义对象。如下所示:

var o = new Object();
var  o = new Object;		//有效,但是不推荐这种做法;
登入後複製
Object的每个实例都具有以下下列属性和方法:
  • constructor:保存着用于创建当期那对象的函数。

  • hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是实际的原型中)是否存在。

  • isPrototypeOf(object):用于检查传入的对象那个是否是当前对象的原型。

  • propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句

  • toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应

  • valueOf():返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同

  • toString():返回对象的字符串表示

  • 由于在JavaScript中Object是所有对象的基础,因此所有对象都具有这些基本的属性和方法。

【相关推荐:javascript学习教程

以上是詳細解析JavaScript中的六大基本資料類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板