复习--javascript数据类型

javascript数据类型

  • 空(Null)
  • 未定义(Undefined)
  • 数字(Number)
  • 字符串(String)
  • 布尔值(Boolean)
  • 符号(Symbol)
  • 对象(Object)
    以上前六种为基本数据类型,最后一种为引用数据类型

基础数据类型和引用数据类型的区别

  • 基础类型的数据在被引用或拷贝时是值传递,也就是说会创建一个完全相等的变量。
  • 引用类型只是创建一个指针指向原有的变量,实际上两个变量是“共享”这个数据的,并没有重新创建一个新的数据

Undefined
只有一个值undefined

可以得到undefined的情况:

  • 引用已声明但未初始化的变量
var a; //undefined
  • 引用未定义的对象属性
var b = {}; //undefined
  • 执行无返回值函数
(()=>{})() //undefined
  • 执行void表达式
void 0 //undefined  此方法可以结合三木运算符使用,代表不执行任何操作
  • 全局常量window.undefined 或 undefined
window.undefined  //undefined

如何判断一个变量的值是否为undefined?

  • 通过typeof关键字获取变量x的类型,然后与“undefined”字符串做真值比较。

Null
只有唯一的一个值null,都可以表示空值。
甚至我们通过“==”,来比较他们是否相等的时候结果得到的都是true。

null是JavaScript保留关键字;undefined 只是一个常量;

Boolean
Boolean数据类型有两个值:truefalse

注意:不要将各种表达式和变量转换为Boolean数据类型当做判断条件

Number

  • NaN(Not a Number)通常在计算失败的时候会得到该值。要判断一个变量是否为NaN则可以通过Number.isNaN函数进行判断。
  • Infinity是无穷大,加上负号“-”会变成无穷小
    使用场景:通过数值来表示权重或者优先级;Infinity可以表示最高优先级或最大权重。

进制转换的方法?

//进制数转换失败返回NaN
['0','1','2'].map(parseInt)  //[0,NaN,NaN]
//10进制转换为其他进制
(10).toString(2)  //"1010"

数值类型的数据可能会遇到精度问题

//比如在进行浮点数运算时
0.1+0.2 //0.30000000000000004
//解决办法,舍弃末位小数
parseFloat((0.1+0.2).toPrecision(12))   //0.3

String

aa

Symbol
是ES6中引入的一个新的数据类型,它表示一个唯一的常量。

aaa

Object

  • 简单的说,Object类型数据就是键值对的集合
    键是一个字符串(或者Symbol),值可以是任意类型的值
  • 复杂的说,Object又包括很多子类型,比如Date,Array、Set、RegExp。

深拷贝和浅拷贝的区别?

  • 由于引用类型在赋值时只传递指针,这种拷贝方式称为浅拷贝
  • 而创建一个新的与之相同的引用类型数据的过程称之为深拷贝

通过等号=赋值只是浅拷贝,要实现真正的拷贝操作则需要通过遍历键来赋值对应的值;这个过程中如果遇到Object类型还需要再次进行遍历。

把已添加的对象记录下来,这样下次碰到相同的对象引用时,直接指向记录中的对象即可,要实现这个记录功能。可以借助ES6新推出的Weak’Map对象,该对象是一组键/值对的集合,其中键是弱引用的,其键必须是对象,而值可以是任意的。

关于类型转换
什么是类型转换?JavaScript这种弱类型的而语言,相对于其他高级语言的一个特点。那就是在处理不同数据类型运算逻辑操作时,会强制转换成同一数据类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值