JavaScript的数据类型简要介绍

JavaScript数据类型

一、数据类型

数据是有类型

在JS(ES5),数据分为两大类:
基本数据类型5类:Number、String、Boolean、Undefined、Null
复杂数据类型:Object、Array、Function

1.基本(简单)数据类型

  • 数值类型(number) 即数字,包括整数、小数、八进制、十六进制等,除这些简单的数字外,在 Number 类型中还有几个比较特殊的情况。

    • 算术运算不能得到正常数字会返回 NaN——NaN number(任意两个 NaN 都不相等的)
    • 无穷大——Infinity number
    • 小数相加 会有一点偏差(计算机为二进制,精度问题)
    • 1,2,3,6,1.1,-100,-100.99…
  • 字符串类型(string) 是用引号引起来的数据,单双引号都可以。“ web”或 ‘web’

    • length属性:字符串长度
    • charAt(index):在字符串中获取对应下标的字符,下标从 0 开始
    • 字符串[下标]:在字符串中获取对应下标的字符,ie7 及一直下获取到 undefind
 console.log(str[0]);//IE7 及以下返回 undefined
        注意:除了引号引起来的是字符串外,所以我们从 input 表单中获取的用户输入的内容都是字符串,哪怕输入的是数字。
  • 布尔类型(boolean)
    • 属性:真假 true false
    • 口诀:“非 0 为真,非空为真”——即 0 为假,其他数字为真;空字符串为假,其他为真。
  • null 表示值为空
  • undefined 表示变量没有初始化,值是空缺的
    • 未定义 表示变量定义了,但是没有初始化(赋值)

注意:若检测null的数据类型,结果为object

    console.log(typeof o);//object

特殊情况:NaN not a number

        console.log(a);//NaN
        console.log(typeof a);

null和undefined的区别:

undefined是访问以未初始化的变量时的返回的值

null是访问一个不存在的对象时返回的值

undefined表示访问一个空的变量,null表示访问一个空的对象

2.复杂数据类型

引用(对象)类型

例如:Object 、Array、Function 、Date…

1)Object类型
具体的东西(事物)都可以看做对象,也就是说万物皆对象(从页面当中获取的所有元素(标签)都是对象类型)。

声明 object 对象类型有两种方式,一种通过关键字 new 实例化对象(var obj=new Object()),还有一种通过字面量的形式声明对象(var obj1={}).在 object 数据类型中,储存值时,通过键值对的形式储存(name:“张三”)其中 name 叫做键名(属性名),“张三”叫做键值(属性值)。

var obj={			//定义对象
	name:"jack",
	age:20
};

//取出对象的值
console.log(obj.age);
//对象赋值
obj.age=100;

2)数组类型 Array

数组中可以保存多个数据,js 里面的数据组项没数据类型的限制,一个数组当中可以存放任意类型的数据。

属性:length 数组的元素个数

索引:从0开始

数组可以通过 [索引] 形式来取值和赋值

        var arr = [10, 20, 10, 20, 100, 50];

        console.log(arr[0]);//取值
        console.log(arr[5]);

        arr[0]=100;//赋值
        console.log(arr);

3)Function类型

函数是一种封装

函数主要用于存放代码块,函数不会自动执行,需要调用才能执行。

        //定义一个函数
        function show() {
            console.log('hello');
            console.log('world');
            console.log('哈哈哈');
        }

        show();//调用函数
        show();
        show();

判断数据类型:typeof
如果这个值未定义,返回——“undefined”
如果这个值是布尔值,返回——“boolean”
如果这个值是字符串,返回——“string”
如果这个值是数值,返回——“number”
如果这个值是对象或 null,返回——“object”
如果这个值是函数,返回——“function”

常量和变量

二、数据类型转换

1.为什么要进行数据类型转换?

2.数据类型转换
强制类型转换和隐式类型转换

3.强制类型转换

1)其它类型转换为number类型

Number()

  • 可以将数字类型的字符串转换为数值类型
  • 其它的类型则会转换为NaN

parseInt()

  • 转换为 Number 类型,取整,舍弃小数部分。
    • parseInt 还可以有第二参数,即以什么进制进行转换(建议任何时候加上第二参数 10,即以 10 进制转换),而 parseFloat 没有第二个参数。
      parseFloat()
  • 转换为 Number 类型,保留小数
注意: parseInt 和 parseFloat 在转换时对数据进行解析转换,前者是整数,后者是浮点数。他们的解析原则是从前往后进行解析,尽其可能。若存在有能识别的数字就解析,遇到不能识别的就结束转换,如果第一位就不是数字则返回 NaN。
        //parseInt()           自左向右一个一个的转换,遇到非数字型字符,结束转换
        // var a="hello";
        // var b="10";
        // var c="hello999";
        // var d="999hello888";

        // var s=parseInt(a);//NaN
        // var s=parseInt(b);
        // var s=parseInt(c);//NaN
        // var s=parseInt(d);//999
        // console.log(s);

        //parseFloat()
        // var s=parseFloat(a);//NaN
        // var s=parseFloat(b);//10
        // var s=parseFloat(c);//NaN
        // var s=parseFloat(d);

        var a="9.99";
        var s=parseInt(a);//转换为整数类型
        var s1=parseFloat(a);//转换为浮点类型
        console.log(s,s1);

可以通过isNaN()方法来判断指定变量是否为:非数字,返回布尔值,是数字返回 false,不是数字返回 true。可以用于判断当前字符串是否是纯数值字符串。

2)其它类型转换为字符串类型

  • 调用toString()
    - 例如:a.toString()
  • String(变量)
    • 两个方法会生成一个新的字符,不会改变原来的变量
    • 两者区别:String 能针对任何数据类型,而 toString 不能针对 undefind 和 null
JavaScript中的假值:undefind、null、false、空字符串、0、NaN

4.隐式类型转换
在数据类型之间进行算术运算时,除了加法运算,其他(- * / %)都将转为 num-ber 类型。加法运算在遇到有字符串时,“+”变为连接符号,将字符串的前后拼接到一起。转换为 string 类型的值,如果两边都没有字符串,则都转成数字,变成数字的加法运算。

在JavaScript中运算过程中,会发生数据类型之间的转换。例如:加减乘除

+碰到了字符串,则运算结果是字符串类型

数字类型字符串,进行减法、乘法、除法等…

三、运算符

能够进行运算的符号

1.算术运算符

+(加法) - * / %(取余)

++(自增) --(自减)
计算规则:

  •  如果两边都是数字,则就是普通的数学计算
    
  •  如果有一边是字符串,则另一边也转成字符串,变成字符串的拼接
    
  •  如果没有字符串,则调用 Number 方法,转成数字,再进行相加
    
  •  如果有一边是对象,则对象调用 toString 得到的字符串表示,再进行计算
    

注意

  • ​ 若+(加法)运算符两边有一个为字符串类型,则执行拼接操作,拼接结果为字符串类型

  • ​ 数字型字符串可以进行算术运算

  • 自增自减运算符的前置和后置对变量自身没有影响    ++a      a++
    
  • 若自增和自减出现在了赋值语句中:
    
  • 运算符前置,先运算,再赋值
    
  • 运算符后置,先赋值,后运算
    

2.赋值运算符

= += -= *= /= %= (先运算,再赋值)
将一个数值赋给一个变量,即 a=10;则 10 赋给 a,那么 a 的值为 10。

3.比较(关系)运算符

运算结果是:布尔类型

大于 > < >= <= == != ===

注意:>=和<= 有一个成立即可

=的区别: ==只比较数值,===既比较数值,又比较数据类型

        console.log('我' == '我');//判断两个字符串是否一致
        console.log(null==undefined);//true
        console.log(null===undefined);//false

4.逻辑运算符

一般情况下,逻辑运算符的运算结果为:布尔类型

&& 逻辑与

​ 两边均为真,则为真,其它均为假
口诀:“一假则假”

|| 逻辑或

​ 两边只要有一个为真,则结果为真。两边均为假,则假
口诀:“一真则真”

! 非

​ 取反

5.条件运算符

?:

条件?表达式1:表达式2     

执行规则:若条件为真,则结果为表达式1,若条件为假,则结果为表达式2

6.运算符的优先级

四、拓展

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

  • 基本数据类型:保存在栈内存中
  • 引用数据类型:数据的保存分为两部分,在堆中保存数据;在栈中保存数据在堆中的地址。

手绘内存图
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值