JS数据类型
数据类型
JavaScript中两大类数据类型
- 基本数据类型
| 类型名 | typeof检测结果 | 值举例 | |
|---|---|---|---|
| 基本类型值 | 数字类型 | 数字类型number | 数字类型number5 |
| 字符串类型 | string | 'ABC博客' | |
| 布尔类型 | boolean | true | |
| undefined类型 | undefined | undefined | |
| null类型 | object | null |
typeof运算符
- 使用typeof运算符可以检测值或者变量的类型
typeof 5; // number
typeof 'ABC博客'; // string
<body>
<script>
var a = 5; //number
var b = 'ABC博客'; // string
var c = ' '; // string 内容是空格
console.log(a); //输出a的值:5
console.log(typeof a); //输出a的类型: string
</script>
</body>
number数字类型
- 在JavaScript中所有数字部分大小、不分整数或浮点数、不分正负,都是数字类型
typeof 2021; //number
typeof 2.21; //number
typeof -2021; //number
typeof .5; //number
上面的 .5 代表 0.5 ,小数中的 0 可以省略不写
科学计数法
- 较大数或较小数(绝对值较小)可以写成科学计数法
3e5; //300000
typeof 3e5; //number
3e-4; //0.0003
typeof 3e-4; //number
特殊的数字型值NaN
- NaN是英语 " not a number " 的意思,即 “不是一个数”,但它是一个数字类型的值
typeof NaN; //number - 0除以0的结果是NaN,事实上,在数学运算中,若结果不能得到数字,其结果往往都是NaN
string字符串类型
- 字符串就是“人类的自然语言”
- 字符串要用引号包裹,双引号/单引号都可以
typeof "好好学习"; //string
typeof '好好学习'; //string
分清数字和字符串
- 数字11和字符串'11'在语义上不同,前者表达一个数量,后者是一个文本
typeof 11; //number
typeof '11'; //string
字符串的拼接
- 加号用来拼接多个字符串
'好好' + '学习' //'好好学习'
字符串和变量的拼接
- 要将一个变量的值“插入”到字符串中,要“斩断链接”
var year = 2022;
var str = '北京冬奥会在' + year + '年召开'
空字符串
- 一些时候需要用使用空字符串,直接书写闭合的引号对即可
var str = '';
字符串的length属性
- 字符串的length属性表示字符串的长度
'我爱祖国'.length //4
’我爱祖国,我爱祖国'.length //9
''.length //0
字符串的常用方法
-
“方法”就是能够打点调用的函数,字符串有丰富的方法
方法 功能 charAt() 得到指定位置字符 substring() 提取子串 substr() 提取子串 slice() 提取子串 toUpperCase() 将字符串变为大写 toLowerCase() 将字符串变为小写 indexOf() 检索字符串
charAt()方法
- charAt()方法可以得到指定位置的字符
![]()
'我喜欢JS,我也喜欢HTML' .charAt(0) // ' 我 '
'我喜欢JS,我也喜欢HTML' .charAt(11) // ' T '
'我喜欢JS,我也喜欢HTML' .charAt(74) // ' '
74已经超出长度,所以结果是空字符串
char字符的意思,at,charAt()在第几个位置的字符
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(3,5) // ' JS '
'我喜欢JS,我也喜欢HTML' .substring(5,3) // ' JS '
-
substr(a,b)中,将得到从a开始的长度为b的子串
'我喜欢JS,我也喜欢HTML' .substr(3,2 ) // ' JS ' -
substr(a,b)中,b可以省略,表示到字符串结尾
'我喜欢JS,我也喜欢HTML' .substr(6) // ' 我也喜欢HTML ' -
substr(a,b)中,a可以是负数,表示倒数位置,从-1开始
'我喜欢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) // ' HTML '
负数表示倒数,表示从 -4 位到 -1 位的子串,-1位也就是倒数第一个 -
slice(a,b)中,参数a必须小于参数b
'我喜欢JS,我也喜欢HTML' .slice(6,2) // ' '对比总结
-
substring(a,b)和slice(a,b)功能基本一致,都是得到从a开始到b结束(不包括b)的子串,区别:
1,substring()可以自动交换两个参数的位置,而slice()不行
2,slice()的参数a可以是负数,而substring()不行
-
substr(a,b)中参数b是子串长度,而不是位置编号
-
toUpperCase()和toLowerCase()
- toUpperCase()转为大写
- toLowerCase()转为小写
'i love you'.toUpperCase(); //"I LOVE YOU"
'I LovE You'.toUpperCase(); //"I LOVE YOU"
'i love you'.toLowerCase(); //"i love you"
'I LovE You'.toLowerCase(); //"i love you"
indexOf()
- indexOf()方法返回某个指定的字符串值在字符串中首次出现的位置
- 如果要检索的字符串值没有出现,则该返回-1
'abcdeb'.indexOf('b') //1
'abcdeb'.indexOf('de') //3
'abcdeb'.indexOf('m') //-1
返回的值类型是 number
布尔类型
- 布尔型值只有两个: true 和 false,表示真和假
typeof true; //boolean
typeof false; //boolean
js中布尔值为false的六种情况
下面6种值转化为布尔值时为false,其他转化都为true
1、undefined(未定义,找不到值时出现)
2、null(代表空值)
3、false(布尔值的false,字符串"false"布尔值为true)
4、0(数字0,字符串"0"布尔值为true)
5、NaN(无法计算结果时出现,表示"非数值";但是typeof NaN==="number")
6、""(双引号)或''(单引号) (空字符串,中间有空格时也是true)
注意空数组空对象,负值转的布尔值时都为true
不同数据类型转化为布尔值的结果
| 数据类型 | 转为true的值 | 转为false的值 |
|---|---|---|
| Boolean | true | false |
| String | 任何非空字符串 | ''(空字符串) |
| Number | 任何非零数字值(包括无穷大) | 0或者NaN |
| Object | 任何对象 | null |
| Undefined | 无 | undefined |
对于0, '', null, undefined, NaN,{}, [], Infinity求布尔值,分别是false false false false false true true true.
因此我们知道的一点是:对象的布尔值是true,即使是对象{}。
"!!"将表达式进行强制转化为bool值的运算,运算结果为true或者false。
undefined是什么
- 一个没有被赋值的变量的默认值是undefined,而undefined的类型也是undefined
- 即:undefined又是值,又是一个类型,这种类型只有它自己一个值
typeof undefined; //undefined
null类型是什么
- null表示“空”,它是“空对象”
- 当我们需要将对象销毁,数组销毁或者删除事件监听时,通常将它们设置为null
box.onclick = null; - 注意:用typeof检测null结果是object
typeof null; //object

浙公网安备 33010602011771号