在计算机中,不同的数据所需占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利用存储空间,于是定义了不同的数据类型。
简单来说,数据类型就是数据的类别符号。比如姓名”张三“,年龄18,这些的数据类型是不一样的。
变量的数据类型
Javascript是一种弱类型或者说动态语言。
这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。
var age = 10; //这是一个数字型 var areYouOK = '是的' //这是一个字符串
js的变量数据类型是只有程序在运行过程中,根据等号右边的值来确定的。
var x = 10; //x是数字型 x = 'zeyi'; //x是字符串型
js是动态语言,变量的数据类型是可以变化的。
数据类型的分类
JS把数据类型分为两类:
- 简单数据类型(Number、String、Boolean、Undefined、Null)
- 复杂数据类型(object)
简单数据类型(基本数据类型)
简单数据类型 | 说明 | 默认值 |
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 |
数字型:Number
Javascript数字类型既可以用来保存整数值,也可以保存小数(浮点数)。
var age = 21; //整数 var Age = 21.3747; //小数
数字型进制:
最常见的进制有二进制、八进制、十进制、十六进制。
//1.八进制数字序列范围:0~7 //数字前面加0表示八进制 var num1 = 07; //对应十进制的7 var num2 = 019; //对应十进制的10 var num3 = 08; //对应十进制的8 //2.十六进制数字序列范围:0~9以及A~F //数字前面加0x表示十六进制 var num = 0xA;
注意:在js中,八进制前面加0,十六禁止前面加0x。
数字型范围:
JavaScript中数值的最大值和最小值
alert(Number.MAX_VALUE);//1.7976931348623157e+308 alert(Number.MIN_VALUE);//5e-324
数字型三个特殊值:
Infinity
:代表无穷大,大于任何值
-Infinity
:代表无穷小,小于任何值
NaN
:Not a Number,代表一个非数值
isNaN()
用来判断非数字,并且返回一个值.
如果是数字返回的是false,如果不是数字返回的是true。
字符串型:String
字符串型可以是引号中的任意文本,其语法为双引号 ""
和单引号 ''
var strMsg = "岳泽以"; // 使用双引号表示字符串 var strMsg2 = '猫宁'; //使用单引号表示字符串 //常见错误 var strMsg3 = 个人网站; //报错,没没用引好,会被认为是js代码,但js没这些语法
因为HTML标签里面的属性使用的是双引号,JS这里我们更推荐使用单引号。
字符串引号嵌套
JS可以使用单引号嵌套双引号,或者使用双引号嵌套单引号(外双内单,外单内双)
var strMsg = '这是"岳泽以"的个人博客'; var strMsg = "这是'岳泽以'的个人博客"; //常见错误 var strMsg = '岳泽以"; //报错,不能单双引号混合搭配
字符串转义符
类似HTML里面的特殊字符,字符串中也有特殊字符--转义符
转义符都是 \
开头的,常用转义符及说明:
转义符 | 解释说明 |
\n | 换行符,n是newline的意思 |
\\ | 斜杠\ |
\' | ‘ 单引号 |
\" | "双引号 |
\t | tab缩进 |
\b | 空格,b是blank的意思 |
布尔型:Boolean
true:表示真(对)——1
false:表示假(错)——0
var flag = true; //flag 布尔型 var flag1 = true; //flag1 布尔型 console.log(flag+1);// true参与加法运算当1来看 console.log(flag1+1);// flase参与加法运算当0来看
布尔型和数字型相加的时候,true的值为1,false的值为0。
Undefined和Null
如果一个变量声明未赋值,会有一个默认值Undefined(如果进行相连或者相加时,注意结果)
var variable; console.log(variable); //undefined console.log('你好' + variable); //你好undefined console.log(11 + variable); //NaN console.log(true + variable); //NaN
一个声明变量给null值,里面存的值为空。
var variable; variable = null; console.log('你好' + variable); //你好null console.log(11 + variable); //11 console.log(true + variable); //1
获取变量的数据类型
typeof关键字
var num = 10; console.log(typeof num); //number var str = 'zeyi'; console.log(typeof str); //string var flag = true; console.log(typeof flag); //boolean var vari = undefined; console.log(typeof vari); //undefined var timer = null; console.log(typeof timer); //object
prompt
取过来的值为字符型(string
)
var age = prompt('请输入您的年龄'); console.log(age); console.log(typeof age);
字面量
字面量是在源代码中一个固定值的表示法,通俗来说,就是字面量表示如何表达这个值。
- 数字字面量:8,9,10——蓝色
- 字符字面量:'岳泽以',"个人博客"——黑色
- 布尔字面量:true,false——深影蓝色
数据类型的转换
使用表单、prompt获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算,而需要转换变量的数据类型。
通俗来说,就是把一种数据类型的变量转换成另外一种数据类型。
隐式转换
某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换方式为隐式转换。
规则:
- +号两边只要有一个是字符串,都会把另外一个转成字符串。
- 除了+以外的算术运算符 比如- * / 等都会把数据转成数字类型。
console.log(11 + 11); console.log('11' + 11); console.log(11 - 11); console.log('11' - 11); console.log(1 * 1); console.log('1' * 1); console.log(typeof '123'); console.log(typeof + '123'); console.log(+'11' + 11);
注:+号作为正号解析可以转换成Number
显式转换
编写程序时过于依靠系统内部的隐式转换是不严谨的,因为隐式转换规律并不清晰,大多是靠经验总结的规律。
为了避免因隐式转换带来的问题,通常根逻辑需要对数据进行显式转换,即通过自己写代码来告诉系统该转换成什么类型。
把数字型转换成字符串型
1.toString()
var num = 10; var str = num.toString();
2.利用String(变量)
var num = 10; console.log(String(num));
转换为数字型(重点)
1.parseInt(变量)
可以把字符型转换为数字型,得到的是整数。
var age = prompt('输入年龄'); console.log(parseInt(age)); console.log(parseInt('120px')); //会去掉px console.log(parseInt('rem120px')); //NaN
2.parseFloat(变量)
可以把字符型转换为数字型,得到的是浮点数。
console.log(parseFloat('3.14')); //3.14 console.log(parseFloat('120px')); //会去掉px console.log(parseFloat('rem120px')); //NaN
3.利用Number(变量)
var str='123'; console.log(Number(str)); console.log(Number('12');
转换成布尔型
方式:Boolean()函数
- 代表空、否定的值会被转换成
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('123'));//true console.log(Boolean('xxx'));//true