整体介绍
数据类型简介和检测 基本数据类型 1)数字类型 2)字符串类型 3)布尔类型 4)undefined类型 5)null 数据类型的转换 1)数据类型的转换 2)小案例:小小加法计算器 复杂数据类型简介
数据类型简介和检测
两大类数据类型
typeof运算符
使用typeof运算符可以检测值或者变量的类型
typeof 5; //number
typeof 'MK网'; //string
使用RELP环境调试
在html5环境中需要加入console.log才能输出结果
- typeof不是函数,是操作符,后面不需跟括号,跟上括号虽然能输出结果,但并不规范
2. js是弱类型语言,给变量赋予什么类型的值,就是什么类型
var a = 123 值是123 是number类型,而不是var类型
5种基本数据类型
Number(数字)类型
所有数字不分大小、不分整浮、不分正负,都是数字类型
typeof 925; //number
typeof 3.13; //number
typeof -6; //number
小数中的0可省略
.5; //0.5
typeof .5; //number
科学计数法
较大数或较小数(绝对值较小)可以写成科学计数法
3e8; //300000000
typeof 3e8; //number
3e-4; //0.0003
typeof 3e-8; //number
不同进制数字
二进制数值以0b开头
0b10 // 2
0b1111 //15
八进制数值以0开头
017 //15
十六进制数字以0x开头
0xf //15
一个特殊的数字型值NaN
NaN是英语”not a number’”的意思,即“不是一个数”,但它是一个数字类型的值
typeof NaN; //number
0除以0的结果是NaN,事实上,在数学运算中,若结果不能得到数字,其结果往往都是NaN
NaN有一个”奇怪”的性质:不自等。这个知识点将在后续课程中讲解
String(字符串)类型
字符串就是“人类的自然语言’ 字符串要用引号包裹,双引号或者单引号均可
分清数字和字符串
数字11和字符串’11’在语义上是不同的,前者表达一个数量后者是一个文本
字符串拼接
加号可以用来拼接多个字符串
'imo'+'oc' //'imooc'
字符串和变量的拼接
要将一个变量的值“插入”到字符串中,要“斩断链接”
新版ES中增加了反引号表示法,可以更方便进行变量插值,后续课程将进行介绍
空字符串
一些时候需要使用空字符串,直接书写闭合的引号对即可
var str =' ';
字符串的length属性
字符串的length属性表示字符串的长度
'我喜欢JS'.length //5
'我喜欢S,我也喜欢HTML'.length //14
''.length //0
字符串的常用方法
“方法”就是能够打点调用的函数,字符串有丰富的方法
charAt()方法
charAt()方法可以得到指定位置的字符
'我喜欢JS,我也喜欢HTML'.charAt(0) //'我'
'我喜欢JS,我也喜欢HTML'.charAt(11) //'T'
'我喜欢JS,我也喜欢HTML'.charAt(74) //''
substring()、substr()和slice()
substring(a,b)方法得到从a开始到b结束(不包括b处)的子串
'我喜欢JS,我也喜欢HTML'.substring(3,5) //'JS'
'我喜欢JS,我也喜欢HTML'.substring(10,14) //'HTML'
substring(a,b)方法如果省略第二个参数,返回的子串会一直到字符串的结尾
'我喜欢JS,我也喜欢HTML'.substring(6) //'我也喜欢HTML'
substring(a,b)中,a可以大于b,数字顺序将自动调整为小数在前
'我喜欢JS,我也喜欢HTML'.substring(5,3) //'JS'
substr(a,b)中,将得到从a开始的长度为b的子串
'我喜欢]S,我也喜欢HTML'.substr(3,2)//JS
substr(a,b)中,b可以省略,表示到字符串结尾
'我喜欢JS,我也喜欢HTML'.substr(3)//'JS,我也喜欢HTML'
substr(a,b)中,a可以是负数,表示倒数位置
'我喜欢JS,我也喜欢HTML'.substr(-4,2)//'HT'
slice(a,b)方法得到从a开始到b结束(不包括b处)的子串
'我喜欢JS,我也喜欢HTML'.slice(3,5)//'JS'
slice(a,b)的参数a可以是负数
'我喜欢JS,我也喜欢HTML'.slice(-4,-1)//'HTM'
slice(a,b)中,参数a必须小于参数b
'我喜欢JS,我也喜欢HTML'.s1ice(5,2)//''
对比总结
substring(a,b)和slice(a,b)功能基本一致,都是得到从a开始到b结束(不包括b)的子串,区别: ①substring()可以自动交换两个参数位置,而slice()不行; ②slice()的参数a可以是负数,而substring()不行。 substr(a,b)中参数b是子串长度,而不是位置编号
toUpperCase()和toLowerCase()
toUpperCase()转为大写
toLowerCase()转为小写
'i love you'.toUppercase();//'I LOVE YOU'
'IMOOC'.toLowercase();//'imooc'
indexOf()
indexOf()方法返回某个指定的字符串值在字符串中首次出现的位置
如果要检索的字符串值没有出现,则该返回-1
'abcdeb'.indexof('b')//1
'abcdeb'.indexof('de')//13
'abcdeb'.indexof('m')//-1
Boolean(布尔)类型
undefined类型
一个没有被赋值的变量的默认值是undefined,而undefined的类型也是undefined
即:undefined又是值,又是一种类型,这种类型只有它自己一个值
typeof undefined;//undefined
变量声明提升的情况
在变量声明提升时,变量的值也是undefined。
console.log(a);//undefined
console.log(typeof a);//undefined
var a 10;
NULL类型
null表示“空”,它是“空对象” 当我们需要将对象销毁、数组销毁或者删除事件监听时,通常要将它们设置为null。
box.onclick = null;
用typeof检测null结果是object
使用typeof检测null值,结果是object,这点尤其要注意
typeof null;//object
类型和typeof检测结果并不总是一一对应,比如数组用typeof检测结果也是object
JavaScript可能看起来”千疮百孔”,一定需要刻意记忆,这些点往往也是面试常考的。
数据类型的转换
其他值转为数字
使用Number()函数
使用parselnt()函数
parselnt()函数的功能是将字符串转为整数
使用parseFloat()函数
parseFloat()函数的功能是将字符串转为浮点数
其他值转为字符串
使用toString()方法
几乎所有值都有toString()方法,功能是将值转为字符串
其他值转为布尔值
使用Boolean 函数()
小小计算器
使用prompt()函数弹出输入框,让用户输入两个数字 对用户输入两个数字进行加法运算,而由于用户输入的内容是字符串类型,所以必须先转为数字类型,才能做加法运算 最后用alert()显示结果
复杂数据类型简介
除基本类型值外,JS的世界中还有复杂数据类型。 [1,2,3] {“a”:1,“b”:2} function(){} 复杂数据类型都是“引用类型”,引用类型的特性将在数组课中介绍