js的那些数据类型

1. 基本数据类型

  1. Number(数字 包括 NaN(非数字) Infinity(无限大))

  2. String(字符串 以双引号" "开头并结尾、单引号’ '开头结尾)

  3. Null (空对象指针、空值)

  4. Boolean 布尔值 (true 和 false)

  5. undefined (找不到、未定义)

2. 引用数据类型

  1. Object(object对象)

  2. Array(数组对象)

  3. function(函数对象)

  4. Math(数学对象)

  5. Date(时间对象)

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

  1. 引用数据类型的值是可变的

  2. 基本数据类型不可以被改变 基本数据类型的改变就是重新赋值

  3. 引用数据类型的值存储在栈和堆中

  4. 基本数据类型的值存储在栈中

  5. 基本数据类型不可以添加属性和方法

  6. 引用数据类型可以添加属性和方法

  7. 基本数据类型的比较是值的比较

  8. 引用数据类型的比较是地址的比较

Extend1(undefined 和 null):

undefined

  1. 声明了一个变量,但未对其初始化时,这个变量的值就是undefined。
  2. 访问一个变量中不存在的属性或者方法时返回undefined
  3. 函数中操作形参但没有传递这个实参的时候 形参的值是undefined
  4. 函数没有返回值的时候 返回undefined

null

  1. null是原型链的终端
  2. 如果定义的变量在将来用于保存对象,那么最好将该变量初始化为null,而不是其他值。(换句话说,只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存null值,这样有助于进一步区分null和undefined。)
  3. 当一个数据不再需要使用时,我们最好通过将其值设置为null来释放其引用,这个做法叫做解除引用。不过解除一个值的引用并不意味着自动回收改值所占用的内存。解除引用的真正作用是让值脱离执行环境,以便垃圾收集器在下次运行时将其回收。解除引用还有助于消除有可能出现的循环引用的情况。这一做法适用于大多数全局变量和全局对象的属性,局部变量会在它们离开执行环境时(函数执行完时)自动被解除引用。(DOM0级事件的移除)

Extend2(检测数据类型的方法):

  1. typeof (返回一个字符串,表示未经计算的操作数的类型。)

    console.log(typeof 42);   // number
    console.log(typeof undefined); // undefined
    console.log(typeof null) // object
    

    缺点:对于数组和对象或null 都会返回object

  2. constructor

    var num1 = 7; console.log(num1.constructor === Number); // true
    var num1 = new Number(7); console.log(num1.constructor === Number);

    缺点: 对于数组和对象或null 都会返回object

  3. instanceof(用于测试构造函数的prototype属性是否出现在对象的原型链中的任何位置)

  4. object.prototype.toString.call(某个变量)

    var arr = Math.sin; 
    console.log(Object.prototype.toString.call(arr));// Object Function
    var str = "string"; 
    console.log(Object.prototype.toString.call(str));// Object String
    var num = new Number(4); 
    console.log(Object.prototype.toString.call(num));// Object Number
    var get = null;
    console.log(Object.prototype.toString.call(get));// Object Null
    var abc = undifined;
    console.log(Object.prototype.toString.call(abc));// Object Undifined
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值