JS数据类型和转换

2019-03-02  本文已影响0人  前端咸蛋黄

一、简介

JS共有7种数据类型:Undefined,Null,Boolean,Number,String,Symbol(新增),Object

typeof 操作符

二、数据类型

(一)String

JS的字符串仅支持两个字节的字符,如果字符字节大于2,会被认为是两个字符。比如“𝌆”。

"𝌆".length  //2

(二)Number

1. 整数和浮点数

JS 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是相同的,是同一个数。由于浮点数不是精确的值,所以涉及小数的比较和运算要特别小心。

0.1+0.2  //0.30000000000000004
(0.1+0.2).toFixed(1)  //0.3
2. 数值精度

精度最多只能到53个二进制位,绝对值小于2的53次方的整数,即-253到253,都可以精确表示。

3. 数值范围

JavaScript 能够表示的数值范围为21024到2-1023(开区间)
如果超出范围,就会返回Infinity。

4. 数值的进制
5. 特殊数值

JS可以用科学记数法表示数字

3.125e7   //31250000
3e-7   //0.0000003

NaN是 JavaScript 的特殊值,表示“非数字”(Not a Number),主要出现在将字符串解析成数字出错的场合。

5 - 'x'  //NaN
isNaN(5 - 'x')  //true

Infinity表示无穷

(三)Boolean

布尔值代表“真”和“假”两个状态。“真”用关键字true表示,“假”用关键字false表示。布尔值只有这两个值。
在JS中,Boolean()为false的值有:

0  //NaN
NaN  //NaN
""  //NaN
undefined  //NaN
null  //NaN

(四)Symbol

对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。

var person = {zzy:"sb",aka:"sb"}
person.zzy == person.aka  //true
var person = {zzy:Symbol("sb"),aka:Symbol("sb")}
person.zzy == person.aka  //false

(五)Undefined

undefined表示“未定义”

(六)Null

null表示空值,即该处的值现在为空。调用函数时,某个参数未设置任何值,这时就可以传入null,表示该参数为空。

(七)Object

1. 属性的读取与赋值
2. 属性的删除
3. 属性是否存在:in 运算符
4. 属性的遍历:for...in 循环

三、数据类型的转换

(一)String
(二)Number
(三)Boolean

四、复制变量值

基本类型的值在内存中占据固定大小,因此被保存在栈内存中,从一个变量向另一个变量复制基本类型的值,会创建这个值的副本。



引用类型的值是对象,保存在堆内存中,从一个变量向另一个变量复制引用类型的值,复制的其实是指针,因此两个变量最终都指向一个对象。


上一篇 下一篇

猜你喜欢

热点阅读