媒介
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
关注
期待偕行
以上