数据类型
1. 数据类型简介
1.1 为什么需要数据类型
在计算机中,不同的数据所需占用的存储空间是不同的,为了便于把数据分成所需的大小不同的数据,充分利用存储空间,于是定义了不同的数据类型。
简单的来说,数据类型就是数据类别的信号。比如姓名“张三”,年龄18,这些数据的类型是不一样的。
1.2 变量的数据类型
变量是用来存储值的所在处,它们有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。Javascrip是一种弱类型或者说动态语言。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。
在代码运行时,变量的数据类型是由JS引擎根据 = 右边变量值的数据类型来判断的,运行完毕之后,变量就确定了数据类型。
javascript拥有动态类型,同时也意味着相同的变量可用作不同的类型
js是动态语言 变量的数据类型是可以变化的
var x = 6; //x为数字
var x = "bill"; //x为字符串
1.3 数据类型的分类
js把数据类型分为两类:
- 简单的数据类型(Number,String,Boolean,Undefined,Null)
- 复杂的数据类型(object)
2. 简单的数据类型
2.1 简单数据类型(基本数据类型)
Javascript中的简单数据类型及其说明如下:
简单数据类型 | 说明 | 默认 |
---|---|---|
Number | 数字型,包含整型值和浮点型值,如21或0.21 | 0 |
Boolean | 布尔值类型,如true、false。等价于1和0 | false |
String | 字符创类型,如"张三"注意咱们js里面,字符串都带引号 | " " |
Undefined | var a; 声明了变量a但是没有给值,此时a=undefined | undefined |
Null | var a = null;声明了变量a为空值 | null |
2.2 数字型Number
-
数字型进制
最常见的进制有二进制,八进制,十进制,十六进制。
//1. 八进制数字序列范围:0~7
var num1= 07; //对应十进制的7
var num2=019; //对应十进制的19
var num3=08; //对应十进制的8
//2. 十六进制数字序列范围:0~9以及A-F
var num = 0xA;
现阶段我们只需要记住,在JS中八进制前面加0,十六进制前面加0x -
数字型范围
JavaScript中数值的最大和最小值
alert(Number.MAX_VALUE); //1.7976931348623157e+308
alert(Number.MIN_VALUE); // 5e-324 -
数字型三个特殊值
代码如下:
alert(Infinity); //Infinity 无穷大,大于任何数值
alert(-Infinity); // -Infinity 无穷小,小于任何数值
alert(NaN); //NaN Not a number,代表一个非数值
- isNaN()
用来判断一个变量是否为非数字的类型,返回false或者true。
var userAge = 21;
var isok = isNaN(userAge);
console.log(isok); //false,21是一个数字
var usrName = "vick";
console.log(isNaN(usrName)); //true,“Vicky”是一个非数字
2.3 字符串型String
- 字符串型可以是引号中的任意文本,其语法为 “双引号” 和 ‘单引号’
var strMsg = "大猪蹄子,小猪佩奇"; //使用双引号表示字符串
var strMsg2 = '噗哈哈哈'; //使用单引号表示字符串
//常见错误
var strMsg = 猪猪侠; //报错,没有使用引号,会被认为是js代码,但js没有这些语法
因为HTML标签里面的属性使用的是双引号,js这里我们更 推荐使用单引号。 (外双内单,外单内双)
var strMsg = '我是"搬砖"程序员'; //可用过' '包含" "
var strMsg = "我是'搬砖'程序员"; //也可以用" "包含' '
//常见错误
var badQuotes = '呀呀呀"; //报错,不能用单双引号搭配
- 字符串转义符
类似HTML里面的特殊字符,字符串中也有特殊字符,我们称之为转义符。
转义符都是\开头的,常用的转义符及其说明如下:
转义符 | 解释说明 |
---|---|
\n | 换行符,n是newline的意思 |
\\ | 斜杠\ |
\ ’ | '单引号 |
\t | tab缩进 |
\b | 空格,b是blank的意思 |
- 字符串长度 string
字符串是由若干字符组成的,这些字符的数量就是字符串的长度。通过字符串的length属性可以获取整个字符串的长度。
var strMsg = "我是漂亮的程序媛!";
alert(strMsg.length); //弹框显示9
- 字符串的拼接
- 多个字符串之间可以使用 + 进行拼接,其拼接方式为字符串+任何类型 = 拼接之后的新字符串
- 拼接前会把字符串相加的任何类型转成字符串,再拼接成一个新的字符串
例如:
console.log("Vicky" + 25); //打印结果就是Vicky25
console.log(12+ 12); //打印结果是24
+ 号口诀:数值相加,字符相连
- 字符串拼接加强
console.log('Vicky' + 25); //只要有字符就會相連
var age = 25;
// console.log('Vicky25歲'); 這樣不行
console.log('Vicky' + age); //vicky25
console.log("Vicky" + age +'岁啦'); //vicky25岁啦
- 我们经常会将字符串和变量来拼接,因为变量可以很方便地修改里面的值。
- 变量是不能添加引号的,因为加引号的变量会变成字符串。
- 如果变量两侧都有字符串拼接,口诀:引引加加,删除数字,变量写在中间。
案例分析:
题目:弹出一个输入框,需要用户输入年龄,之后弹出一个警示框显示“您今年XX岁啦”(XX表示刚才输入的年龄)。
var age = prompt('请输入年龄:');
var str = '您今年' +age+'岁啦';
alert(str);
2.5 布尔型Boolean
布尔类型有两个值:true 和 false,其中true表示真(对),而false表示假(错)。
布尔型和数字型相加的时候,true的值为1,false的值为0.
console.log(true + 1); //2
console.log(false + 1); //1
2.6 Undefined 和 Null
一个声明后没有被赋值的变量会有一个默认值undefined(如果进行相连或者相加时,注意结果)
var variable;
console.log(variable); //undefined
console.log('你好'+variable); //你好undefined
console.log(11 + variable); //NaN
console.log(true + variable); //NaN
一个声明变量给null值,里面存的值为空(学习对象时,我们继续研究null)
var vari = null;
console.log('你好'+vari); //你好null
console.log(11 + vari); //11
console.log(true + vari); //1
3. 获取变量数据类型
3.1 获取检测变量的数据类型
typeof 可用来获取变量检测值
var num = 10;
console.log(typeof num); //number
var str = 'Vicky';
console.log(typeof str); //string
var flag = true;
console.log(typeof flag); //boolean
var cari = undefined;
console.log(typeof cari); //undefined
var timer = null;
console.log(typeof timer); //object
3.2 字面量
字面量是在源代码中一个固定值的表示法,通俗来说,就是字面量表示如何表达这个值。
- 数字字面量:8,9,10
- 字符串字面量:‘vicky’,‘程序猿’
- 布尔字面量:true ,false
4. 数据类型转换
4.1 什么是数据类型转换
使用表单、prompt获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算,而需要转换变量的数据类型。通俗来说,就是把一种数据类型的变量转换成另一种数据类型。
我们通常会实现3种方式的转换:
- 转换为字符串类型
- 转换为数字型
- 转换为布尔型
4.2 转换为字符型
方式 | 说明 | 案例 |
---|---|---|
toString() | 转成字符串 | var num=1; alert(num.toString); |
String()强行转换 | 转换成字符串 | var num=1; alert(String(num)); |
加号拼接字符串 | 和字符串拼接的结果都是字符串 | var num = 1; alert(num+“我是字符串”); |
- toString和String()使用方式不一样。
- 三种转换方式,我们更喜欢用第三种加号拼接字符串转换方式,这一种方式也称之为隐式转换。
4.3转换为数字型(重点)
方式 | 说明 | 案例 |
---|---|---|
parseInt(string)函数 | 将string类型转成整数数值行 | parseInt(‘78’) |
parseFloat(string)函数 | 将string类型转成浮点数数值型 | parseFloat('78.21) |
Number()强制转换函数 | 将string类型转换为数字型 | Number(‘12’) |
js隐式转换(- * /) | 利用算术运算隐式转换为数值型 | ‘12’ - 0 |
- 注意 parseInt 和parseFloat单词的大小写,这两个是重点。
- 隐式转换是我们在进行算数运算的时候,JS自动转换了数据类型
案例1:计算年龄
此案例要求在页面中弹出一个输入框,我们输入出生年份后,能计算出我们的年龄。
代码如下:
var year = prompt('请输入您的出生年份');
var age = 2021 - year; // year取过来的是字符串型 但这里用减法,有隐式转换
alert('今年已经'+age+'岁了');
案例2:简单加法器
计算两个数的值,用户输入第一个值后,继续弹出第二个输入框并输入第二个值,最后通过弹出窗口显示出两次输入值相加的结果。
代码如下:
var num1 = prompt('请输入数值:');
var num2 = prompt('请输入第二个数值:');
var result = parseInt(num1) + parseInt(num2);
alert('结果是:'+result);
4.4转换为布尔类型
方式 | 说明 | 案例 |
---|---|---|
Boolean()函数 | 其他类型装为布尔值 | Boolean(“true”); |
- 代表空、否定的值会被转换为false,如 ’ ',0,NaN,null,undefined。
- 其余值都会被转换为true
console.log(Boolean(’ ')); //false
console.log(Boolean(0)); //false
console.log(Boolean(NaN)); //false
console.log(Boolean(null)); //false
console.log(Boolean(undefined)); //false
console.log(Boolean(‘小白’)); //true
console.log(Boolean(12)); //true