您好,欢迎访问一九零五行业门户网

JavaScript数据类型的介绍

本篇文章给大家带来的内容是关于javascript数据类型的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
最近面试了三个开发,他们都没有说清楚js的基本类型有哪些。而且往往错误的说了一些c语言的数据类型,例如int, float, double之类的数据类型。
无论什么语言,熟练掌握数据类型都是这门语言最根本的知识点
js数据类型分为两类,一类是基本类型,他们有
numberstringbooleanundefinednullsymboljs的基本类型就这么几个,除此之外,其他的类型都是对象。
number类型
在js没有整型,float,或者double类型的数值,所有数值统一叫做number类型。
js使用ieee754格式表示整数和浮点数,一般来说整数占用了32位,而浮点数数占用64位。因为浮点数占用的内存空间是整数的两倍,所以js会适当的把浮点数转化为整数储存。
4.0 === 4 // true
数值类型都是有大小范围的
number.max_value  // 1.7976931348623157e+308number.min_value // 5e-324number.max_safe_integer // 9007199254740991number.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).  --mdnboolean
boolean值很简单,就false和true两个值。但是很多人不能完全回答出,哪些值会被转换成false。
除了下面几个能够被转成false的值,其他都是true。
false''nanundefined0, -0, +0null
undefined 和 null
undefined表示一个变量被定义了,但是没有被赋值。null表示这个变量根本没被定义。总之,无论是undefined和null,他们基本上都是不能使用的值。
null类型有个特别的作用。比如有个对象,有很多属性,这时候你想把这个变量给标记为可以被垃圾回收了,那么就可以把它的值设置为null。
最熟悉的陌生人:  对象
我曾认为对象在js中是最简单的,而实际上,是我太天真。// 定义一个对象,so easyvar 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 ? 男 : 女 }})
本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注的javascript视频教程栏目!
以上就是javascript数据类型的介绍的详细内容。
其它类似信息

推荐信息