js数据类型

来源:互联网 发布:mac安装win10激活码 编辑:程序博客网 时间:2024/06/05 16:03

这里写图片描述

typeof操作符

用于检测给定变量的数据类型,有7种返回结果:

  • “undefined”值未定义
  • “boolean” 布尔值
  • “string” 字符串
  • “number”数值或NaN
  • “object”对象或null
  • “function”函数
  • “symbol”ES6新增,独一无二

一. Undefined类型

只有一个值,即undefined,使用var声明变量但未初始化时。
注意:判断一个变量的值是否为undefined

if(a == "undefined")  ×if(typeof a == "undefined") √if(!a) √

二. Null类型

只有一个值,即null,表示一个空对象指针。所以使用typeof检测时会返回”object”。如果定义的变量准备用于保存对象,最好初始化为null而不是其他值。

实际上,undefined值是派生自null值的

alert(null == undefined) //返回true

三. Boolean类型

该类型只有两个值:true和false,和数字值0、1不是一回事,且区分大小写。调用转型函数Boolean()可将一个值转换为其对应的Boolean值。

数据类型 转换为true的值 转换为false的值 Boolean true false String 任何非空字符串 “”(空串) Number 任何非0数值 0和NaN Object 任何非空对象 null Undefined × undefined

四. Number类型

  • 十进制
  • 八进制:第一位必须是0 (0-7)
  • 十六进制:前两位必须是0x (0-9 A-F)

  • 浮点数
    浮点数值的最高精度是17位小数,但在进行算术计算时其精度远不如整数,如0.1+0.2结果不是0.3,而是0.30000000000000004。不只js,其实像java等语言也是这样。
if(a + b == 0.3) //×,不要做这样的测试
  • 数值范围
    最小数值:Number.MIN_VALUE (5e-324)
    最大数值:Number.MAX_VALUE (1.797693…..7e+308)
    isFinite()函数判断是否位于最小和最大数值之间;
    若某次计算结果超出数值范围,则该数值会被自动转换成特殊的Infinity(正无穷,正数除以0)、-Infinity(负无穷,负数除以0)

  • NaN非数值

    • 0/0会返回NaN,任何涉及NaN的操作都会返回NaN;
    • NaN与任何值都不相等,包括NaN本身;
    • isNaN()函数:尝试将值转换为数值,不能转换则返回true;
alert(NaN == NaN);//返回false
  • 数值转换
    三种方法:
    • 转型函数Number(),用于任何数据类型
      这里写图片描述
    • parseInt() 专门用于字符串(常用)
      如果第一个字符是数字,则继续解析,直到遇到了一个非数字字符或解析完所有后续字符
parseInt(""); //空串返回NaNparseInt("1234blue"); //1234parseInt("22.5"); //22parseInt("0xf"); //15

也可为parseInt()方法传入第二个参数,指定基数(多少进制)

parseInt("AF",16); //175parseInt("AF"); //NaN
 - parseFloat()

只解析十进制数,所以没有第二个参数

五. String类型

把一个值转换成String类型,有如下三种办法

  • toString()
    数值、布尔值、对象和字符串值都有toString()方法,但null和unedfined值没有
var num = 10;num.toString(); //"10"//正常用法,不必传参数,但调用数值的toString()方法时可以传参,指明进制num.toString(2); //"1010"num.toString(8); //"12"
  • String()转型函数
    • 如果值有toString()方法,则调用该方法返回相应结果
    • 如果值是null,则返回”null”
    • 如果值是undefined,则返回”undefined”
  • 使用加号操作符+

六. Object类型

var o = new Object(); //Object是所有对象的基础

七. Symbol类型

var s1 = Symbol('foo'); //通过Symbol函数生成var s2 = Symbol();var s3 = Symbol();s2 === s3 //falses1.toString();//可转化为字符串//不能与其他类型的值进行计算

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

  • 基本类型值:由于占据空间小,大小固定,所以存储在栈内存中,按值访问,它们的值直接存储在变量访问的位置,从一个变量向另一个变量复制基本类型的值,会创建这个值的一个副本。
  • 引用类型值:占据空间大,大小不固定,所以存储在堆内存中,按引用访问,存储在变量处的值是一个指针,指向存储对象的内存地址;从一个变量向另一个变量复制引用类型值时,复制的其实是指针,因此两个变量最终都指向同一个对象。
原创粉丝点击