本文共 2283 字,大约阅读时间需要 7 分钟。
JS的基本数据类型有哪些呢?
js基本数据类型: es5中的基本数据类型有:Undefined、Null、Boolean、Number、String、Object。 es6中新加一个数据类型 symbol 检测当前变量的数据类型方法 typeof 基本数据类型对应检测结果:这里typeof(null) 返回为object 原因是 null被认为是一个空对象引用。
Undefined :类型只有一个值,Undefined 。在使用var 声明变量但未对其加以初始化时,这个变量的值就是Undefined。建议用的时候对变量初始化,避免某个比较坑的问题出现。 Null:类型是第二个只有一个值的数据类型,这个特殊的值是null。从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof操作符检测null时会返回object的原因。 如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其他值。这样一来,只要直接检测null值就可以知道相应的变量是否已经保存了一个对象的引用了。 实际上,undefined值是派生自null值的 当我们在控制台打印输出时会出现虽然Boolean类型的字面值只有两个,但JavaScript中所有类型的值都有与这两个Boolean值等价的值。要将一个值转换为其对应的Boolean值,可以调用类型转换函数Boolean(),
给大家看下比较有趣的问题:
对象和布尔进行比较 对象要转换成 字符串 然后再转数字 布尔转数字 进行比较
[]转换为字符串'',然后转换为数字0,true转换为数字1,所以为false。 == 情况下的隐式转换NaN并不是一个数字,他的类型是一个;
任何数值除以0都会导致错误而终止程序执行。但是在ECMAScript中,会返回出特殊的值,因此不会影响程序的执行。 任何与NaN进行运算的结果均会为NaN,NaN与自身不相等(NaN不与任何值相等)。 ECMAScript提供isNaN()函数,用来判断这个是不是NaN。isNaN()函数在接收到一个值后,会尝试将这个值转换成数值。 这个方法使用的时候要小心 假如数据是不为空的字符串的话,亦或者是个对象的话 就会混淆 需要留意的是 空字符串,空数组 :console.log(isNaN(1)); //false console.log(isNaN("")) ; //falseconsole.log(isNaN([])); //falseconsole.log(isNaN([1,2])); //true
还好es6为我们提供了Number.isNaN() 方法
当传入一个数字参数并调用 Number.isNaN 时,会进行以下几步:1. 如果Type(number) 不是数字, 返回 false.2. 如果数字是NaN, 返回true.3. 其他情况,返回false.
Number.isNaN() 方法返回的结果符合我们的预期,非常的友好(参数真正为NaN时,才会返回true)
console.log(Number.isNaN(NaN)); // trueconsole.log(Number.isNaN('hello')); // falseconsole.log(Number.isNaN(['x'])); // falseconsole.log(Number.isNaN({})); // false
先到这吧,后面还有一大推 比如:基本数据类型 对应的 引用类型,引用类型的赋值问题 ,赋值问题又牵扯到 深拷贝,浅拷贝 栈 堆 ; 栈,堆的溢出,又牵扯到 js 内存泄漏,解决内存泄漏又关联到垃圾回收 等等等等。。。。
这方面的总结要看好多资料,怕误导了大家,如果文中有什么错的地方 大家指出来,共同学习!
瞎折腾个公众号,感兴趣的可以关注下,谢谢。转载地址:http://rgzdo.baihongyu.com/