二、数据类型
在计算机中,不同的数据所需占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利用存储空间,于是定义了不同的数据类型。
简单来说,数据类型就是数据的类别型号。比如姓名“张三”, 年龄18这些数据的类型是不一样的。
变量是用来存储值的所在处,它们有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。JavaScript 是一种弱类型或者说动态语言。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。
在代码运行时,变量的数据类型是由JS引擎根据 = 右边变量值的数据类型来判断的,运行完毕之后,变量就确定数据类型。
JavaScript拥有动态类型,同时也意味着相同的变量可用作不同的类型
2.1.数据类型的分类
JS把数据类型分为两类:
● 简单数据类型( Number, string, Boolean, undefined, Null )
● 复杂数据类型( object)
1、简单数据类型
简单数据类型 说明 默认值
Number 数字型,包含整型值和浮点型值,如21. 0.21 0
Boolean 布尔值类型,如true、 false, 等价于1和0 false
String 字符串类型,如“张三”注意咱们js 里面,字符串都带引号 “”
Undefined var a; 声明了变量a但是没有给值,此时a = undefined undefined
Null vara= nul;声明了变量a为空值 null
2.1.1数字型
JavaScript数字类型既可以用来保存整数值,也可以保存小数(浮点数)。
八进制数字序列范围: 0~7
var num1 = 07;//对应十进制的7
var num2 = 019;//对应十进制的19
var num3 = 08;//对应十进制的8
十六进制数字序列范围: 0-9 以及A~F
var num = 0xA;
在JS中八进制前面加0。十六进制前面加Qx
1、数字型范围
JavaScript中数值的最大和最小值
alert (Number.MAX_VALUE); // 1. 7976931348623157e+308
alert (Number.MIN_VALUE); // 5e-324
2、数字型三个特殊值
alert (Infinity) ;// Infinity
alert(-Infinity); // -Infinity
alert (NaN) ; // NaN
●Infinity ,代表无穷大,大于任何数值
●-Infinity ,代表无穷小,小于任何数值
●NaN , Not a number ,代表一个非数值
3、isNaN0
用来判断一个变量是否为非数字的类型,返回true或者false
x是数字,返回 false
isNaN(x) x是一个非数字类型
x不是数字,返回 true
var usrAge = 21;
var isOk = isNaN (userAge) ;
console . log (isNum) ; // false, 21不是一个非数字
var usrName = "andy" ;
console.1og (isNaN (userName)); // true, "andy"是一个非数字
2.1.2字符串型
字符串型可以是引号中的任意文本,其语法为 双引号(" ")和单引号(’ ’)
1、字符串引号嵌套
JS可以用单引号嵌套双引号, 或者用双引号嵌套单引号 ( 外双内单,外单内双 )
var strMsg =, 我是 "高帅富" 程序猿'; // 可以用 ’ ’ 包含 ” ”
var strMsg2 = "我是 '高帅富程’ 序猿"; // 也可以用 " " 包含 ‘ ’ 常见错误
var badquotes = 'what on earth?"; //报错,不能单双引号搭配
2、字符串转义符
类似HTML里面的特殊字符,字符串中也有特殊字符,我们称之为转义符。
转义符都是 ** 开头的,常用的转义符及其说明如下 :
转义符 解释说明
\n 换行符,n是newline的意思
\\ 斜杠 \
\' ’单引号
\" ”双引号
\t tab缩进
\b 空格, b是blank的意思
3、字符串长度
字符串是由若干字符组成的,这些字符的数量就是字符串的长度。通过字符串的length属性可以获取整个字符串的长度。
4、字符串拼接
● 多个字符串之间可以使用 +进行拼接,其拼接方式为 字符串+任何类型=拼接之后的新字符串。
● 拼接前会把与字符串 相加的任何类型转成字符串,再拼接成一个新的字符串
// 1.1字符串"相加”
alert('hello' +,,+ 'world') ; // hello world
//1.2数值字符串"相加”
alert('100' + '100'); // 100100
//1.3数值字符串+数值
alert('11' + 12) ; // 1112
+ 号总结口诀 : 数值相加 , 字符相连 .
5、字符串拼接加强
console. log ('我' + 18) ;//只要有字符就会相连
var age = 18;
console. log( '我age岁啦'); //这样不行
console.1og('我' + age) ; //我18
console.log('我’ + age + ‘岁啦' ); // 我18岁啦
● 我们经常会将字符串和变量来拼接,因为变量可以很方便地修改里面的值
2.1.3布尔型
布尔类型有两个值: true和false , 其中true表示真(对) , 而false表示假(错)。
布尔型和数字型相加的时候, true 的值为1 , false 的值为0。
2.1.3 undefined和 null
2.3获取检测变量的数据类型
typeof可用来获取检测变量的数据类型
var num = 10;
console .1og(typeof num); // number
var str = 'pink';
console.1og(typeof str); // string
var flag = true;
console. log(typeof flag); // boolean
var vari = undefined;
console. log(typeof vari); // undefined
prompt 取过来的值是字符型
2.4字面量
字面量是在源代码中一个固定值的表示法, 通俗来说,就是字面量表示如何表达这个值。
●数字字面量: 8,9,10
●字符串字面量: '我" “哈哈哈哈"
●布尔字面量: true , false
2.5数据类型转换
使用表单、prompt 获取过来的数据默认是字符串类型的此时就不能直接简单的进行加法运算 ,而需要转换变量的数据类型。通俗来说,就是把一种数据类型的变量转换成另外一种数据类型。
我们通常会实现3种方式的转换:
● 转换为字符串类型的
● 转换为数字型
● 转换为布尔型
1.转换为字符串
方式 说明 案例
toString() 转成字符串 var num= 1; alert(num.toString);
String()强制转换 转成字符串 var num = 1; alert(String(num));
加号拼接字符串 和字符串拼接的结果都是字符串 var num= 1; alert(num+ "我是字符串");
● toString()和String()使用方式不一样。
● 三种转换方式,我们更喜欢用第三种加号拼接字符串转换方式,这-种方式也称之为隐式转换。
2.转换为数字型(重点)
方式 说明 案例
parselnt(string)函数 将string类型转成整数数值型 parselnt(78')
parseFloat(string)函数 将string类型转成浮点数数值型 parseFloat(78.21)
Number()强制转换函数 将string类型转换为数值型 Number('12)
js隐式转换( - * / ) 利用算术运算隐式转换为数值型 ‘12’ - 0
3.转换为布尔型
方式 说 明 案例
Boolean()函数 其他类型转成布尔值 Boolean'true';
● 代表空、否定的值会被转换为false ,如" 0、NaN、null、 undefined ”
● 其余值都会被转换为true
2.6、拓展
2.6.1.解释型语言和编译型语言概述
计算机不能直接理解任何除机器语言以外的语言,所以必须要把程序员所写的程序语言翻译成机器语言才能执程序。程序语言翻译成机器语言的工具,被称为翻译器。
● 翻译器翻译的方式有两种:一个是编译,另外一个是解释。两种方式之间的区别在于翻译的时间点不同。
● 编译器是在**代码执行之前进行编译,**生成中间代码文件。
● 解释器是在运行时进行及时解释,并立即执行(当编译器以解释方式运行的时候,也称之为解释器)。
2.6.2.标识符
标识(zhi)符:就是指开发人员为变量、属性、函数、参数取的名字。
标识符不能是关键字或保留字。
2.6.3.关键字
关键字:是指JS本身已经使用了的字,不能再用它们充当变量名、方法名。
包括:
break. case、 catch. continue、 default. delete、 do、else、 finally. for, function. if. in.instanceof. new、 return、 switch, this、 throw、 try. typeof. var. void、 while、 with等。
2.6.4.保留字
保留字:实际上就是预留的“关键字”, 意思是现在虽然还不是关键字,但是未来可能会成为关键字,同样不能使用它们当变量名或方法名。
包括:
boolean. byte、char. class、const、 debugger. double. enum, export. extends、
fimal、float. goto、impkements、 import. int. interface. long、 mative. package.
private、protected. public. short、 static、super、 synchronized. throws、 transient.
volatile等。