数据类型及其相关问题

数据类型

1)基本数据类型:number,string,bollean,undefined,null,symbol
2)引用数据类型:Object(function,array两种特殊的对象)

区别

1)声明变量时候的存储分配
基本数据类型存储在栈中
引用数据类型存储在堆中

2)不同的内存分配机制也带来了不同的访问机制

  • 不可以直接访问堆内存空间的位置以及直接操作堆内存空间,只能操作对象在栈内存中引用地址
  • 基本数据类型直接访问,引用数据类型访问引用地址,根据引用地址找到堆中实体

3)复制变量时的不同

  • 基本数据类型:将原始值的副本赋值新的变量
  • 引用数据类型,将引用地址复制给新的变量

相关问题

  • null和undefined的区别
    null:定义了并赋值为null
    undefined:定义未赋值
    转为数值也不同,number(null),为0,number(undefined),为NaN(不是一个数字)
    在这里插入图片描述

  • 什么时候给变量赋值为null
    1)初始赋值,声明将要赋值为对象
    2)结束前,让指向的对象成为垃圾对象(被垃圾回收器回收)

  • 什么时候会出现null
    1)作为函数的参数,表示该函数的参数不是对象
    2)作为对象原型链的终点

  • 为什么null的数据类型判断为object
    是浏览器的一个bug,因为所有的值在计算器中都是一个二进制编码来进行存储,浏览器把前三位都是0的就当作为对象,而null都为0,可以将他看做一个空对象的指针,表明该变量将要赋值为对象

  • 什么时候会出现undefined
    1)变量被声明了,但是没有赋值
    2)调用函数时,应该提供的参数没有提供,该参数就等于undefined
    3)对象没有赋值的属性,该属性的值为undefined
    4)函数没有返回值,默认返回undefined

  • 严格区分变量类型和数据类型
    1)数据类型:基本类型、对象类型(七种数据类型)
    2)变量类型(变量内存类型):基本类型(保存的是基本类型的数据)、引用类型(保存的是地址值)

  • JS中typeof NaN的结果是什么?
    1)NaN不是一个数字,表示是否属于number类型的一种状态:是或者否,不是确切的值
    2)JS中number除了浮点型和整数型,还与一个特殊值NaN
    3)下面NaN表达式中存在不可转化的变量,返回了无效的结果,不是返回确切的值

var a="abc"
console.log(Number(a))

4)NaN不等于它本身,因为他不是确切的值,代表一个范围

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值