JavaScript中的数据类型

媒介

ECMAScript 迄今为止规范定义了
7 种数据范例:
6 种原始范例–
String
Number
Boolean
Undefined
Null
Symbol
1 种援用范例–
Object

看到这里,你是不是已对它们管窥蠡测呢。假如你还对它们之间的定义、转换、检测等方面并非那末清晰,或许已有些隐约。那末,下面就让我们一同去从新探究、复习一遍吧

假如文章中有涌现马虎、毛病的地方,还请看到的小伙伴多多指教,先行谢过

以下↓

原始值


Object 以外的一切范例都是不可变的(值自身没法被转变),我们称这些范例的值为
原始值

String范例

JavaScript 的字符串范例用于示意文本数据.
JavaScript 字符串是不可变动的。这意味着字符串一旦被建立,就不能被修正。然则,能够基于对原始字符串的操纵来建立新的字符串

var a = 'hello'

范例转换:

  • toString()
var num = 2;
num.toString() // '2'
var found = true;
found.toString() // 'true'

撤除
null
undefined 以外,其他数据范例都存在
toString 要领,运用会报错

  • String()
var sym = Symbol(1);
String(sym) // 'Symbol'
var num = 10;
String(num)  // '10'
var str;
String(str) // 'undefined'

假如值有
toString 要领,则挪用该要领并返回相应的效果

假如是 null 返回 'null'

假如是 undefined 返回 'undefined'

  • 隐式转换
var a = 3;
a + ''  // '3'
var obj = {a: 3};

obj + '' // [object object]

转换规则和
String 要领一致

Number范例

依据
ECMAScript 规范,
JavaScript 中只要一种数字范例:基于
IEEE 754 规范的双精度
64 位二进制花样的值(
-(263 -1)
263 -1

特别的数值范例:

无穷大:
+Infinity()
-Infinity()
NaN (非数值,
Not-a-Number)

NaN,非数值。是一个特别的 Number 范例,用来示意一个原本要返回数值的操纵未返回数值的状况

  • 任何触及 NaN 的操纵都返回 NaN
  • NaN 与任何值都不相称,包含 NaN 自身
40 / NaN  // NaN
NaN === NaN // false

最基础的数值字面量花样是十进制整数,还能够经由过程八进制或十六进制来示意。八进制字面值的第一位必需是
0,然后是八进制数字序列
(0 ~ 7)。十六进制字面量的前两位必需是
0x,后跟任何十六进制数字
(0 ~ 9 以及 a ~ f)。个中字母能够是大写也能够是小写

var num1 = 070; // 八进制的56
var num1 = 079; // 无效的八进制,会剖析为十进制的79
var num2 = 56; // 十进制的56
var num3 = 0x38; // 十六进制的56

范例转化体式格局:
Number()
parseInt()
parseFloat() 以及操纵符隐式转换

Boolean范例

示意一个逻辑实体,能够有两个值:
true
false

var suc = true;
var los = false;

范例转化体式格局:Boolean()以及操纵符隐式转换

Undefined范例

Undefined 范例只要一个值,即特别的
undefined 。一个 声明但没有被赋值的变量会有个默认值
undefined

var a;  // undefined

Null范例

Null 范例也只要一个值,即特别的
null 示意一个空对象指针

var foo = null;

Symbol范例

标记
(Symbols)
ECMAScript
6 版新定义的。标记范例是唯一的并且是不可修正的

var s = Symbol()

Symbol 函数前不能运用
new 敕令,不然会报错。这是由于天生的
Symbol 是一个原始范例的值,不是对象

Symbol 函数能够接收一个字符串作为参数,示意对 Symbol 实例的形貌

援用范例


ECMAScript 中,援用范例是一种数据结构,用于将数据和功用构造在一同

最常见的援用范例:对象(Object)、数组(Array)、函数(Function)、正则(RegExp)和日期(Date)

援用范例与基础范例之间最大的差别

基础数据范例的值是按值接见的,基础范例的值是不可变的

var a = 1;
var b = 1;

a === b  // true

b = a 
b = 2;

a // 1

援用范例的值是按援用接见的,援用范例的值是可变的

var a = {};
var b = {};

a === b  // false

var a = {};
var b = a
b.name = 'hello'

a.name // hello

基础包装范例

为了便于操纵基础范例值,
ECMAScript 还供应了
3 个特别的援用范例:
Boolean
Number
String

var a = new String('hello')
typeof a // object 

援用范例与基础包装范例的重要区分就是对象的生存期。运用
new 操纵符建立的援用范例的实例,在实行流脱离当前作用域之前都一向保留在内存当中。而自动建立的基础包装范例的对象,则只存在于一行代码的实行霎时,然后马上烧毁。这意味着我们不能在运行时给基础范例值增加属性和要领

var s1 = 'some text';
s1.color = 'red';
s1.color // undefined

// 然则如许是能够的

var s1 = new String('some text');
s1.color = 'red';
s1.color // red 

不发起显式的建立基础包装范例的对象,由于在许多时刻会形成一些让人很疑惑的东西

var b = new Boolean(false)
var c = b && true
c // true

如许的状况下,b 这个变量就是 Boolean 对象,所以不管在什么状况下,它都是 true

记得之前看到过如许一个题目:

var str = 'hello'

typeof str // String

str instanceof String // false

这里的效果为 false 的缘由就是 str 本质上是一个原始值,并不存在 prototype 属性

固然,这里也触及到了数据范例的推断,有兴致的小伙伴能够 点击这里 检察怎样推断 JavaScript 中的数据范例

跋文

不停总结复习前端方面的知识点以及风趣的东西,感兴致的小伙伴能够 点击这里,检察完整版前端总结知识点,迎接 star 关注

期待偕行

以上

    原文作者:游荡de蝌蚪
    原文地址: https://segmentfault.com/a/1190000018764693
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞