JavaScript数据类型的介绍
比来面试了三个开发,他们都没有说分明JS的根本类型是什么。并且往往错误的说了一些C说话的数据类型,例如int, float, double之类的数据类型。
不管什么说话,熟练把握数据类型都是这门说话最基本的知识点
JS数据类型分为两类,一类是根本类型,他们有
- Number
- String
- Boolean
- Undefined
- Null
- Symbol
js的根本类型就这么几个,除此之外,其他的类型都是对象。
Number类型
在JS没有整型,float,或者double类型的数值,所有数值统一叫做Number类型。
JS使用IEEE754格局表示整数和浮点数,一样来说整数占用了32位,而浮点数数占用64位。由于浮点数占用的内存空间是整数的两倍,所以js会恰当的把浮点数转化为整数贮存。
4.0 === 4 // true
数值类型都是有大小范畴的
Number.MAX_VALUE // 1.7976931348623157e+308 Number.MIN_VALUE // 5e-324 Number.MAX_SAFE_INTEGER // 9007199254740991 Number.MIN_SAFE_INTEGER // -9007199254740991
浮点数一样都是运算结果不准确的,这不是JS的问题,所有说话中都有这个问题。
运算0.1 + 0.2 === 0.3
这个结果永久是false。
要比力浮点数可否相等,可以采纳Number.EPSILON
, Number.EPSILON是一个非常小的数值,假如两个浮点数相减小于Number.EPSILON, 则可认为认为是相等。
Math.abs(0.1 + 0.2 - 0.3) < Number.EPSILON // true
Number类型中有三个比力非凡的兄弟
- Infinity 当数值超越Number类型的最大值,他就会变成正无限
- -Infinity 当数值类型小于Number类型的最小值,就会变成负无限
- NaN NaN的意思是它不是一个数值,例如某个数值除以0,一样说话都会报错,但是js不会,而是该变量的值会变成NaN。
数值类型一旦变成这三个兄弟,就没法参与后续的数值运算。
String类型
从静态说话过来的同学,碰到字符串就会问个问题:请问你能装多少个字符串呢?
字符串傻傻一笑,说:自从我产生以来,从来就没被装满过!
ECMAScript 2016 (ed. 7) established a maximum length of 2^53 - 1 elements. Previously, no maximum length was specified. In Firefox, strings have a maximum length of 230 - 2 (~1GB). In versions prior to Firefox 65, the maximum length was 228 - 1 (~256MB). --MDN
Boolean
Boolean值很简便,就false和true两个值。但是许多人不克不及完全答复出,哪些值会被转换成false。
除了下面几个能够被转成false的值,其他都是true。
false '' NaN undefined 0, -0, +0 null
undefined 和 null
undefined表示一个变量被定义了,但是没有被赋值。null表示这个变量基本没被定义。总之,不管是undefined和null,他们根本上都是不克不及使用的值。
null类型有个特殊的作用。比方有个对象,有许多属性,这时候你想把这个变量给标志为可以被垃圾回收了,那么就可以把它的值设定为null。
最熟知的生疏人: 对象
我曾认为对象在js中是最简便的,而实际上,是我太天真。
// 定义一个对象,so easy var boy = { name: 'wangduanduan' }
var boy = {} Object.defineProperty(boy, 'name', { writable: false, value: 'wdd' }) boy.name = 'ddw' // 设定不会生效,boy.name的值还是wdd
对象的数据属性
数据属性 | 默许值 | 说明 |
---|---|---|
configurable | true | 表示这个属机能否用delete删除 |
enumerable | true | 表示这个属机能否通过for in 轮回遍历 |
writable | true | 表示这个属机能否被修改 |
value | undefined | 表示这个属性的数据值 |
假如调取Object.defineProperty没有指定configurable, enumerable, writable,那么他们的默许值都是false。
拜访器属性
拜访器属性就是get, set让你可以在读取或者写入值时,做一层拦截。
var man = { _sex: 1 } Object.defineProperty(man, 'sex', { set: function (v) { this._sex = v === '男' ? 1 : 0 }, get: function () { return this._sex === 1 ? "男" : "女" } }) nam.sex // 男
想一想假如把上面的_sex改成sex会有什么问题?
// 这样写会有什么问题 var man = { sex: 1 } Object.defineProperty(man, 'sex', { set: function (v) { this.sex = v === '男' ? 1 : 0 }, get: function () { return this.sex === 1 ? "男" : "女" } })
本篇文章到这里就已经全部完毕了,更多其他出色内容可以关注PHP中文网的JavaScript视频教程栏目!
以上就是JavaScript数据类型的介绍的具体内容,更多请关注百分百源码网其它相关文章!