【前端面试之JS】原始数据类型与普通数据类型

数据可以分为原始数据类型和引用数据类型
栈:原始数据类型(Undefined、Null、Boolean、Number、String)
堆:引用数据类型(对象、数组和函数)

1、原始数据类型有哪些?

Number(NaN是其中的特殊数值)、String、Boolean、Null、Undefined、Symbol、BigInt

undefined:Undefined 类型只有一个值,就是特殊值 undefined。当使用 var或 let声明了变量但没有初始化时,就相当于给变量赋予了 undefined值。
String:字符串是不可变的,一旦创建了,值就不能改变了。
Null:null值表示的是一个空对象指针,给typeof传一个null会返回object的原因。
Boolean:布尔类型有两个字面量:true和false。
Symbol:(ES6新增加的)创建独一无二且不可变的数据类型,主要是为了解决可能出现的全局变量冲突的问题。
BigInt:是一种数字类型的数据,可以表示任意精度格式的整数。用于安全的存储和操作大数据。

2、引用数据类型有哪些?

Object(对象)、Array(数组)、function(函数)、RegExp(正则表达式)、Date(日期)

  • Object:创建object常用方式为对象字面量表示法,属性名可以是字符串或数值。
    Symbols出来之前,对象的键只能是String。如果尝试用非字符串作为对象的键,该值会被强制转换为String。所以当采用数字作为对象的键值属性的时候,必须采用中括号的形式,但如果是字符串的话既可以用.也可以用[]
     let person = { name: 'haha', age: 11, 1: 222 };
     let name1 = person.name;//haha
     let name2 = person["name"];//haha
    
     let num1 = person[1];//222
     let num2 = person["1"];//222
    
  • Array:数组中每个槽位可以存储任意类型的数据。并且,数组也是动态大小的,会随着数据添加而自动增长。

3、js中的类型转换机制

Number()

原始值转换结果
undefinedNaN
Null0
true1
false0
String0
Symbol报错
Object0
 console.log(Number('aa111'))//NaN
 console.log(Number('111'))//111
注:只要有一个字符无法转换为数值,整个字符串就会变为NaN

parseInt()
parseInt相比Number,就没那么严格了,parseInt函数逐个解析字符,遇到不能转换的字符就停下来
Boolean()

数据类型转换为true的值转换为false的值
String非空字符串“”
Number非零数值0、NaN
Object任意对象null
undefined不存在Undefined

自动转换为字符串
常发生在+运算中,一旦存在字符串,则会进行字符串拼接操作
自动转换成数值
除了+有可能把运算子转为字符串,其他运算符都会把运算子自动转成数值

4、==和===的区别

==

  • 会进行隐式转换
  • 两个都为简单类型,字符串和布尔值都会转换成数值,再比较
    console.log('1' == true)//true
    console.log('1' == 1)//true
    console.log('aa' == 'aaa')
    console.log(undefined == '') // false
    console.log(null == '') // false
    console.log(null == undefined) // true
    
  • 如果是引用类型,判断他们是否指向同一个对象
  • 存在NaN就返回false
console.log(NaN == undefined)//false
console.log(NaN == '')//false
console.log(NaN == 0)//false

===

  • 只有在两个操作数不转换的前提下相等才返回true
  • undefined===null
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值