首頁 >web前端 >js教程 >javascript的資料型別與其轉換的詳解

javascript的資料型別與其轉換的詳解

不言
不言轉載
2018-10-29 14:19:421431瀏覽

這篇文章帶給大家的內容是關於javascript的資料型別與其轉換的詳解,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

一、簡介

JavaScript 語言的每一個值,都屬於某一種資料型態。 JavaScript 的資料型,共有七種:

  1. 數值(number):整數和小數(例如1和3.14)。

  2. 字串(string):文字(例如Hello World)。

  3. 布林值(boolean):表示真偽的兩個特殊值,即true(真)和false(假)。

  4. undefined:表示「未定義」或不存在。

  5. null:表示空值,即此處的值為空。

  6. 物件(object):各種值組成的集合。

  7. 符號(Symbol)

其中Symbol是ES6新增的基本資料類型,本文只介紹前六種。

二、資料型別詳解

1、數值(number):

1.1 整數與浮點數

JavaScript 內部,所有數字都是以64位元浮點數形式儲存,即使整數也是如此。

1 === 1.0 // true

1.2 精確度

在國際標準IEEE 754中,JavaScript 浮點數的64個二進位位,從最左邊開始,第1位數字符號位決定了一個數的正負( 0為正數,1為負數),第2~12位指數部分決定了數值的大小,第13~64小數部分決定了數值的精確度。
1.3 數值的進位

JavaScript 對整數提供四種進位的表示方法:十進位、十六進位、八進位、二進位。

  • 十進位:沒有前導0的數值。

  • 八進位:有前綴0o或0O的數值。

  • 十六進位:有前綴0x或0X的數值。

  • 二進位:有前綴0b或0B的數值。

1.4 NaN

NaN意為Not a Number,主要出現在將字串解析成數字出錯的場合,如:

618 - 'x' // NaN
NaN不等于任何值,包括它本身。:
NaN === NaN // false
2 . 字串(string):

用''或""引起來,裡面沒有包含任何內容則是空字串,長度為0。而裡面有空格的稱為空格字串,長度為1,兩者是不一樣的。

2.1 多行字串

如果字串分成多行,可以在每一行的尾部使用反斜杠,不加則會報錯。除了使用反斜線外,也可以透過連接運算子( )來連接多個單行字串,兩種方法所得結果一致,建議使用連接運算子( )。

var longString = 'Long \
long \
long \
string';

longString
// "Long long long string"
var longString = 'Long '
  + 'long '
  + 'long '
  + 'string';

longString
// "Long long long string"

ES6中新增反引號(`)來寫多行字串,而這個多行字串的length會包含回車的長度。

2.2 轉義

反斜線()在字串內有特殊意義,用來表示一些特殊字符,所以又稱為轉義符。常需要用反斜線轉義的特殊字元有:

  • 0 :null(u0000)

  • ##n :換行符號(u000A)

  • r :回車鍵(u000D)

  • #t :製表符(u0009)

  • #' :單引號(u0027)

  • " :雙引號(u0022)

    \ :反斜線(u005C)

#2.3 length屬性

length屬性傳回字串的長度,該屬性由字串本省決定,無法透過賦值改變。

var s = 'mamamoo';
s.length // 7
s.length = 5;
s.length // 7

3. 布林值(boolean ):

布林值只有「真」和「假」這兩個值。「真」用關鍵字true表示,「假」用關鍵字false表示。如果JavaScript 預期某個位置應該是布林值,會將該位置上現有的值自動轉為布林值。轉換規則是除了undefined、null、false、0、NaN、""或''(空字串)六個值被轉換為false,其他值都視為true。

4. undefined和null:

null與undefined都可以表示“沒有”,含義非常相似。兩者的區別是:

  • null是一個表示“空”的對象,轉為數值時為0;undefined是一個表示"此處無定義"的原始值,轉為數值時為NaN。

  • 變數沒有值回傳的是undefined。

  • 當有一個物件object但還不想賦值時建議使用null;當有一個非物件但還不想賦值時推薦使用undefined。

#5.物件(object):


####################### ###5.1 生成方法######物件簡單來說就是一組「鍵值對」(key-value)的集合,是一種無序的複合資料集合。###產生方法是用大括號把鍵值對包起來後賦值給變量,兩個鍵值對之間用逗號分隔。“:”前是鍵名,“:”後是鍵值。如:###
var obj = {
  foo: 'Hello',
  bar: 'World'
};
###5.2 鍵名與鍵值###

对象的所有键名都是字符串,要加引号,不加也会自动转为字符串。如果键名不符合标识名的条件(比如第一个字符为数字,或者含有空格或运算符),且也不是数字,则必须加上引号,否则会报错。而键值是什么类型就用该类型的格式。

5.3 属性

对象的每一个键名又称为“属性”(property),它的“键值”可以是任何数据类型。

属性的读取

读取对象的属性,有两种方法,一种是使用点运算符,还有一种是使用方括号运算符。

var obj = {
  p: 'Hello World'
};

obj.p // "Hello World"
obj['p'] // "Hello World",[]内''一定要加

属性的删除delete(无value无key)

var obj = { p: 1 };
Object.keys(obj) // ["p"]

delete obj.p // true
obj.p // undefined
Object.keys(obj) // []

属性的查看Object.keys

var obj = {
  key1: 1,
  key2: 2
};

Object.keys(obj);
// ['key1', 'key2']

属性是否存在:in

in运算符用于检查对象是否包含某个属性(注意,检查的是键名,不是键值),如果包含就返回true,否则返回false。

属性的遍历:for...in 循环

var obj = {a: 1, b: 2, c: 3};

for (var i in obj) {
  console.log('键名:', i);
  console.log('键值:', obj[i]);
}
// 键名: a
// 键值: 1
// 键名: b
// 键值: 2
// 键名: c
// 键值: 3

三、如何知道变量类型?

使用type of可得变量的数据类型,如:

var t = 619;
type of t;//"number"

特别注意的是:

  • 当数据类型为null时,用type of打出的数据类型却是'object'。

  • 当定义了一个函数时,用type of打出的数据类型却是'function'。

四、数据类型的转换

4.1 转为string

  • 使用toString()

var t = 619;
t.toString();//"619"

null没有toString这个API,不能使用toString,会报错

var n = null;
n.toString;
//Uncaught TypeError: Cannot read property 'toString' of null

undefined也会报错

var n = undefined;
n.toString();
//Uncaught TypeError: Cannot read property 'toString' of undefined

object使用toString会得到"[object Object]"。

var object = {name:"po"};
object.toString()
//"[object Object]"
  • 通过与空字符串相加(+"")也能转化为字符串类型,且null、undefined也适用。

  • 使用window.String()

window.String(null)//"null"

为什么1 + '1' = '11'?
这是因为当两个不同数据类型相加时,会优先选择转化为字符串,所以1 + '1'相当于1.toString() + '1',于是结果为两个字符串1相加,即字符串11。

4.2 转为布尔

使用Boolean()

Boolean(0)//false
Boolean('')//false
Boolean(' ')//true

使用!!

!! ''//false
!! ' '//true

五个falsy值:0、NaN、空字符串、null、undefined

4.3 转为Number

使用Number()

Number('1')//1

使用parseInt()

//第二位参数要写,是表示进制

使用parseFloat()

parseFloat('1.23')//1.23

使用 -0

'1'-0//1

使用 +

+ null//0

以上是javascript的資料型別與其轉換的詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除