1.3 数据类型

1、数据类型分类

JavaScript 的数据类型共分为六大类,五大 简单数据类型(也称为基本数据类型)和复杂数据类型(也称为引用数据类型)。

······在计算机中,不同的数据存储所需容量不同,不同数据类型对应业务也不一样。为了充分利用内存空间,区分不同业务,于是将数据分为不同的类型。
······JavaScript的数据类型为弱类型,即最开始的时候并不知道变量是什么类型,必须通过后面的值才能知道,也就意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。

(1)基本(简单)数据类型
基本(简单)数据类型举例typeof 返回的值
Number数字(正负数、小数、0)、infinity(无穷大)、NaN(not a number:不是一个数字)、小数的舍入误差’ number ’
String单双引号裱起来的0个或多个字符(如:“ 哈哈 ”,’ 哈哈 ’ ),有长度、下标并且可以通过下标获取下标相对应位置的字符’ string ’
Booleantrue为真 / false’ boolean ’
Null“空值” ,代表一个空对象指针,使用typeof运算得到object,可认为其是一个特殊的对象值’ object ’
Undefined未定义,声明了但未赋值(如:var a = 10; ,只有 var a ; )’ undefined ’
<1>Number—数字类型

数字类型即数值类型,主要作用是存储数据,参与数学运算。
我们这里大体讲基本数值(所有的数值都是 number 类型,包含整数,小数,负数);
·····················进制数值(在计算机中,常见的机制有二进制、八进制、十进制、十六进制。都是属于 number 类型数值。)
·····················特殊数值(例如NaN、无穷大、小数的舍入误差)。

进制数值

在 JavaScript 中不需要进行进制换算,只需要了解以 0 开头并且没有超过 8 的值,为八进制,0x 开头为十六进制即可。

       //八进制基数范围 0~7,以 0 开头并且没有超过 8 的值,则为八进制
       var num1 = 010; //number 对应十进制 8
       var num2 = 070; //number 对应十进制 56
       var num3 = 020; //number 对应十进制 16
       
       //十六进制基数范围 0-9,A~F,0x 开头,则为十六进制
       var num5 = 0x10;
       console.log(num5, typeof num5); //16 number     

正负数、0、小数都是数字

        var a = 10;   //正数
        console.log(a);
        console.log(typeof(a));
        var b = -6;      //负数
        console.log(b);
        console.log(typeof(b));
        var c = 0;     //0
        console.log(c);
        console.log(typeof(c));
        var d = 12.5;	//小数
        console.log(d);
        console.log(typeof(d));

在这里插入图片描述
无穷大、小数的舍入误差(小数相加会有一点误差)都是数字

        var e = 9 / 0;		//无穷大
        console.log(e);
        console.log(typeof(e));

        var f = 0.1 + 0.2;		//小数的舍入误差
        console.log(f);
        console.log(typeof(f));
        var g = 0.07 * 100;
        console.log(g);
        console.log(typeof(g));

在这里插入图片描述
NaN是数字(数值)类型

NaN的特点:
················NaN表示非数字,但仍属于数字(数值)类型,表示的是“在执行数学运算时没有成功,而返回的一个失败的结果”。
················任何涉及NaN的 非加法 运算,执行结果都是NaN。
················NaN的 加法 运算,如果有字符串,则进行字符串的拼接;如果都是数值,则进行加法运算。

        var h = '小王' + 8;     //做加法时,加号一侧只要有字符串,就默认为字符串的拼接
        console.log(h);
        console.log(typeof(h));
        var i = '小王' - 8;    //做减法时,减号两侧都要转数字再计算
        console.log(i);
        console.log(typeof i);
        var j = NaN + 8;      //NaN和数值之间的运算
        console.log(j);
        console.log(typeof(j));
        var k = NaN + '8';    //NaN和字符串之间的运算
        console.log(k);
        console.log(typeof(k));

        console.log(NaN === NaN); //NaN不等于NaN

在这里插入图片描述

<2>String—字符串类型

单双引号引起的0个或多个字符,建议用单引号

        //第一种写法
        var str1 = ' '     //单引号引起的0个字符
        console.log(str1);
        console.log(typeof(str1));
        var str2 = '成就未来';    //单引号引起的多个字符
        console.log(str2);
        console.log(typeof(str2));
        var str3 = "世界和平";    //双引号引起的多个字符
        console.log(str3);
        console.log(typeof(str3));

        //第二种写法
        var str1 = ' '
        console.log(str1,typeof str1);
        
        var str2 = '成就未来';
        console.log(str2,typeof str2);
        
        var str3 = "世界和平";
        console.log(str3,typeof str3);

在这里插入图片描述
在这里插入图片描述
字符串长度

······格式: 字符串.length···获取当前字符串长度
···
······字符串中,引号内的每个空格和标点符号都算作一个字符。英文状态下,每个字母都算作是一个字符;中文状态下,则是每个字都是一个字符。
······多个字符串之间可以使用 + 进行拼接,用于连成一个字符串。
······数字是没有长度的,打印输出undefined,类型就是undefined。

        var str1 = 'This is an apple!';
        console.log(str1);
        console.log(str1.length);
        var str2 = 'This is an apple';
        console.log(str2);
        console.log(str2.length);
        var str3 = '这是一个苹果!';
        console.log(str3);
        console.log(str3.length);
        var str4 = '这是一个苹果';
        console.log(str4);
        console.log(str4.length);

在这里插入图片描述
字符串下标

······格式: 字符串.charAt( 下标 )···或···字符串[ 下标 ];
···
······下标是对字符串中每个字符的一个编号,编号从0开始;
······可以通过下标获取相对应位置的字符,ie7及以下获取到undefined。

        var str = '愿世界和平!';
        console.log(str);

        console.log(str.charAt(2));
        console.log(str[5]);

在这里插入图片描述

<3>Boolean—布尔类型

······布尔值代表“真”和“假”两个状态,“真”用关键字true表示,“假”用关键字false表示。
······下列运算符会返回布尔值:①前置逻辑运算符,!(Not)
··········································②相等运算符,用来比较两个值是否相等如果相等则返回true,不相等则返回false,例如:全等于===不全等 !==不相等 !===
··········································③比较运算符,>>=<<=
······JavaScript预期某个位置应该是布尔值时,会将该位置上现有的值自动转换为布尔值。转换规则是除了【undefined】、【null】、【false】、【0】、【NaN】、【 " "或 ’ ’ (空字符串) 】六个值会被转换为false外,其他值都视为true。
······注意,空数组([])和空对象({})对应的布尔值,都是true。
在这里插入图片描述
······布尔值往往用于程序流程的控制

        var b1 = true;
        console.log(b1);
        console.log(typeof b1);    //打印 b1 的数据类型
        var b2 = false;
        console.log(b2);

        console.log(b1 + b2);   //打印 b1 + b2 的值
        console.log(typeof(b1 + b2));   //打印 b1 + b2 值的数据类型

在这里插入图片描述
延伸:布尔类型一般用在事件判断里面

格式:···if ( 布尔值 ) { }else { }

  var age = 5;       //小于标准年龄
        if (age >= 7){
            console.log('该上小学了');
        }else{
            console.log('去幼儿园吧');
        }

    var age = 8;       //大于标准年龄
        if (age >= 7){
            console.log('该上小学了');
        }else{
            console.log('去幼儿园吧');
        }

在这里插入图片描述

<4>Null 和 Undefined—空和未定义

null与undefined都可以表示“没有”,含义相似。将一个变量赋值为null或undefined,老实说语法效果几乎没有区别。

    var a = null;
    console.log(a);
    console.log(typeof a);
    var b = undefined;
    console.log(b);
    console.log(typeof b);

在这里插入图片描述
对于null和undefined,大致可以这样理解:

null表示空值,即该处的值现在为空,也代表一个空对象指针,使用typeof运算得到“object”,所以你可以认为它是一个特殊的对象值。

运用举例:
······调用函数时,某个参数未设置任何值,这时就可以传入null,表示该参数为空。比如,某个函数接收引擎抛出的错误作为参数,如果运行过程中未出错,那么这个参数就会传入null,表示未发生错误。

undefined表示未定义,声明了未赋值,值为undefined。

undefined 是在 ECMAScript 第三版引入的,为了区分空指针对象和未初始化的变量,它是一个预定义的全局变量

没有返回值的函数返回为 undefined没有实参的形参也是 undefined

下面是返回undefined的典型场景:

        //声明变量但未赋值
        var i;
        console.log(i);  // undefined

        //调用函数时,应提供的参数没有提供,该参数等于undefined
        function fn(x){
            return x;
        }
        console.log(fn());

        //对象没有赋值的属性
        var o = new Object();
        console.log(o.p);

        //函数没有返回值时,默认返回undefined
        function fn(){}
        console.log(fn());

在这里插入图片描述
null和undefined的区别

undefined:未初始化,访问一个空变量返回的值,声明变量但是未赋值
·
null:空,访问一个空对象返回的值,声明变量赋值但是值为空
·
js源码规定null和undefined相等,即null == undefined为真

(2)引用(复杂)数据类型
引用(复杂)数据类型举例typeof 返回的值
Object对象类型,万物皆对象,如 { },标签等’ object ’
array数组类型,存储数据的容器,如 [ 1 , 2 ]’ object ’
function函数function(){},存储代码的块’ object ’

2、typeof操作符:检测变量的数据类型

注意:typeof返回的结果,必然是字符串,其结果以字符串的形式显示。

鉴于 ECMAScript 是松散类型的(弱类型),因此需要有一种手段来检测给定变量的数据类型,typeof就是负责提供这方面信息的操作符。

语法格式 : 【typeof ( 参数 );如 typeof (a)】 或 【typeof + 空格 + 参数;如 typeof a】
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值