为什么需要数据类型
在计算机中,不同的数据所需占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利用存储空间,于是定义了不同的数据类型
变量的数据类型
变量用来存储值的所在处,它们有名字和数据类型。变量的数据类型决定了如何将代表这些值存储到计算机的内存中。JavaScript是一种弱类型或者说动态语言。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。
js的变量数据类型是在程序运行过程中,根据等号右边的值来确定的
var age = 10; //数字类型
var str= "pink"; // str 字符串类型
在代码运行时,变量的数据类型是由JS引擎根据 = 右边变量住的数据类型进行判断的,运行完毕,变量就确定了数据类型。
JavaScript拥有动态类型时,同事也意味着相同的变量可用作不同的类型:
var x = 6; //x为数字
var x = "Bill"; //x为字符串
数据类型的分类
简单数据类型(Number,String,Boolean,Undefined,Null)
复杂数据类型(object)
情况 | 说明 | 结果 |
var age; console.log(age) | 只声明不符值 | undefined |
console.log(age) | 不声明 不赋值 直接使用 | 报错 |
age=10;console.log(age); | 不声明 只赋值 | 10 |
简单数据类型 | 说明 | 默认值 |
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 |
var num = 10; //num数字类型
var PI = 3.14; //PI数字型
//八进制 0~7 程序里面数字前面加0 表示八进制
var num1 = 010; //010 八进制 转换为10进制 就是8
//十六进制 0~9 a~f 数字的前面加 0x 表示十六进制
var num3 = 0x9 //输出为9
var num4 = 0xa //输出为10
总结:在js中八进制前面加0,十六进制前面加0x
数字型范围
js中数值的最大和最小值
alert(Number.MAX_VALUE); //1.7976931348623157e+308 //数字型的最大值
alert(Number.MIN_VALUE); //5e-324 //数字型的最小值
alert(Number.MAX_VALUE*2); //Infinity 无穷大
alert(-Number.MAX_VALUE*2) //-Infinity 无穷小
alert('pink' - 100) //NaN 非数字
IsNaN()
用来判断一个变量是否为非数字的类型,返回true或者false
//isNaN() 用来判断非数字 并且返回一个值 如果是数字返回的是false 如果不是数字返回的是true
alert(isNaN(12)); //返回false
alert(isNaN(‘你好’)); //返回true
字符串string
字符串可以是引号中的任意文本,其语法为双引号""和单引号’’
var strMsg = "你好"; //使用双引号表示字符串
var strMsg2= '你好'; //使用单引号表示字符串
//常见错误
var strMsg3 = 您好; //报错,没使用引号,会被认为是js代码,但js没有这些语法
由于HTML标签里面的属性使用的是双引号,JS更推荐使用单引号
字符串引号嵌套
JS可以用单引号嵌套双引号,或者用双引号嵌套单引号(外双内单,外单内双)
var strMsg = '我是"高富帅"程序员'; //可以用''包含""
var strMsg2 = "我是'高富帅'程序员"; //可以用""包含''
//常见错误
var badQuotes = 'What on earth?"; //报错,不能单双引号搭配
字符串转义符
类似HTML里面的特殊字符,字符串中也有特殊字符,我们称之为转义符。
转义符都是\开头的,常用的转义符及其说明如下:
转义符 | 解释说明 |
---|---|
\n | 换行符,n是newline的意思 |
\\ | 斜杠\ |
\’ | '单引号 |
\" | "双引号 |
\t | tab缩进 |
\b | 空格,b是blank的意思 |
字符串长度
字符串是由若干字符组成的,这些字符的数量就是字符串的长度。通过字符串的length属性可以获取整个字符串的长度
//检测获取字符串的长度 length
var str = 'my name is andy'
console.log(str.length); // 输出15
字符串的拼接
● 多个字符串之间可以使用 + 进行拼接,其拼接方式为字符串 + 任何类型 = 拼接之后的新字符串
● 拼接前会把与字符串相加的任何类型转成字符串,再拼接成一个新的字符串
<script>
console.log('沙漠' + '骆驼'); //字符串的拼接 输出内容沙漠骆驼
console.log('我今年' + 18 + '岁'); //字符串与数字的拼接 输出内容我今年18岁
console.log('我是' + true); //字符串与布尔值的拼接 输出内容我是true
console.log(12 + 12); //数字与数字的拼接 输出内容24
console.log('12' + 12); //数字字符串+数值 输出内容1112
</script>
“+” 号总结口诀:数值相加,字符相连
字符串拼接加强
//变量不能写到字符串里面,是通过和字符串相连的方式实现的
var age = 18;
//console.log('我今年age岁'); //不可这么写
console.log('我今年' + age + '岁啦');
● 字符串和变量拼接会经常使用,因为变量可以很方便地修改里面的值
● 变量不能添加引号,加引号的变量会变成字符串
● 如果变量俩侧都有字符串拼接,口诀“引引加加”,删掉数字,变量加中间
布尔型 Boolean
布尔类型有俩个值:true和false,其中true表示真(对),而false表示假(错)。
<script>
var flag = true; //flag布尔型 代表真(对)
var flag1 = false; //flag1 布尔型 代表假(错)
console.log(flag + 1); //true 参与加法运算当1来看 输出内容为2
console.log(flag1 + 1); //false 参与加法运算当0来看 输出内容为1
</script>
undefined
<script>
//如果一个变量声明未赋值 就是undefined 未定义数据类型
var str;
console.log(str); //输出内容为undefined
var variable = undefined;
console.log(variable + 'pink'); //输出内容undefinedpink
console.log(variable + 1); // undefined和数字相加 输出结果为NaN
console.log(true + variable ); //输出结果为 NaN
</script>
null
<script>
var space = null;
console.log(space + '你好'); //输出结果为null你好
console.log(space + 11); //输出结果为 11
console.log(true + space); //输出结果为 1
</script>
获取变量数据类型
typeof可用来获取检测变量的数据类型
<script>
var num = 10;
console.log(typeof num); //number
var str = '你好';
console.log(typeof flag); //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
var age = prompt('请输入您的年龄');
console.log(age);
console.log(typeof age); //输出结果为黑色18 为字符串类型
</script>
数据类型转换
使用表单、prompt获取过来的数据默认是字符串类型的,由此不能直接简单的进行加法运算,而需要转换变量的数据类型。通俗来说,就是把一种数据类型的变量转换成另外一种数据类型。
通常实现的3中方式的转换:
● 转换为字符串类型
● 转换为数字型
● 转换为布尔型
转换为字符串
方式 | 说明 | 案例 |
toString() | 转成字符串 | var num = 1; console.log(num.toString()); |
String()强制换行 | 转成字符串 | var num = 1; console.log(String(num)); |
加号拼接字符串 | 和字符串拼接的结果都是字符串 | var num = 1; console.log(num + "我是字符串"); |
<script>
var num = 1;
console.log(num.toString()); //输出结果为黑色 1 表示为字符串
var num1 = 1;
console.log(String(num1)); //输出结果为黑色 1 表示为字符串
var num2 = 1;
console.log(num2 + "我是字符串"); //输出结果为 1我是字符串
</script>
● 把数字类型转换为字符串类型 变量.toString()
● 利用string(变量)
● 利用 + 拼接字符串的方法实现转换效果 隐式转换
转换为数字型(重点)
方式 | 说明 | 案例 |
parseInt(string)函数 | 将string类型转成整数数值型 | parseInt('78') |
parseFloat(string)函数 | 将string类型转成浮点数值型 | parseFloat('78.21') |
Number()强制转换成函数 | 将string类型转换为数值型 | Number('12') |
js隐式转换(- * /) | 利用算术运算隐式转换为数值型 | '12'- 0 |
<script>
//1、parseInt(变量)可以把字符型的转换为数字型 得到是整数
console.log(parseInt('3.14')); // 输出结果为3 取整 会去掉后面的小数点
console.log(parseInt('120px')); //输出结果为120 取整 会去掉px
console.log(parseInt('rem120px')); //NaN
//2、parseFloat(变量)可以把字符型的转换为数字型 得到是小数 浮点数
console.log(parseFloat(3.14)); //输出结果为3.14
//3、利用Number(变量)
var str = '123'
console.log(Number(str)); //输出结果为123
console.log(Number('12')); //输出结果为12
//4、利用了算数运算 - * / 隐式转换
console.log('12' - 0); //输出内容为数字12
console.log('123' - '120'); //输出内容为数字3
</script>
注意:
● parseFloat和parseInt单词的大小写
● 隐式转换是在进行算数运算时,JS自动转换了数据类型,注意不含“+”
转换为布尔型
方式 | 说明 | 案例 |
Boolean()函数 | 其他类型转成布尔值 | Boolean('true') |
<script>
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
</script>