整体介绍

数据类型简介和检测 基本数据类型 1)数字类型 2)字符串类型 3)布尔类型 4)undefined类型 5)null 数据类型的转换 1)数据类型的转换 2)小案例:小小加法计算器 复杂数据类型简介

数据类型简介和检测

两大类数据类型

typeof运算符

使用typeof运算符可以检测值或者变量的类型 typeof 5; //number typeof 'MK网'; //string 使用RELP环境调试

在html5环境中需要加入console.log才能输出结果

  1. 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(){} 复杂数据类型都是“引用类型”,引用类型的特性将在数组课中介绍