文章目录
1.数据类型
在代码运行时,变量的数据类型是由 JS引擎 根据 = 右边变量值的数据类型来判断 的,运行完毕之后, 变量就确定了数据类型
JS 把数据类型分为两类:
- 基本数据类型(
Number
,String
,Boolean
,Undefined
,Null
) - 复杂数据类型(
Object
)
1.1基本数据类型(不包括ES6)
简单数据类型 | 说明 | 默认值 |
---|---|---|
Number | 数字型,包含整型值和浮点型值,例如18,0.18 | 0 |
Boolean | 布尔值类型,如true,false ,等价于1和0 | false |
string | 字符串类型,例如"格子" | “” |
Null | var a = null; 声明了变量a为空值 | null |
Undefined | var a; 声明了变量a但是没有赋值,此时a=undefined | undefined(未定义的) |
1.1.1 Number
JavaScript
数字类型既可以用来保存整数值,也可以保存小数(浮点数)
<script>
var score = 5
var score = 5.35
</script>
- 数字型进制
最常见的进制有二进制、八进制、十进制、十六进制
<script>
var score1 = 5 //十进制
var score2 = 05 //八进制
var score3 = 0x5 //十六进制
</script>
在JS中八进制前面加0,十六进制前面加 0x
- 数字型范围
JS中数字型数值的最大值用Number.MAX_VALUE
表示
JS中数字型数值的最小值用Number.MIN_VALUE
表示
<script>
console.log(Number.MAX_VALUE, Number.MIN_VALUE);
//输出:1.7976931348623157e+308 5e-324
</script>
- 数字型的一些特殊值
①数字型中用Infinity
来表示无穷大,大于任何有限值,甚至大于上面提到的Number.MAX_VALUE
②同样地,数字型中用-Infinity
来表示无穷小,小于任何有限值,甚至小于上面提到的Number.MIN_VALUE
③NaN
:Not a Number,代表一个非数值
<script>
console.log(Infinity > Number.MAX_VALUE);
console.log(-Infinity < Number.MIN_VALUE);
console.log(NaN);
//true
//true
//NaN
</script>
isNaN
这个方法用来判断非数字,并且返回一个值,如果是数字返回的是false,如果不是数字返回的是true
<script>
var flag1 = isNaN(18);
var flag2 = isNaN('hh');
console.log(flag1); //false
console.log(flag2); //true
</script>
1.1.2 String
字符串型可以是引号中的任意文本,其语法为 "XXX"
或 'XXX'
<script>
var str1 = "格子学前端";
var str2 = '格子学前端';
</script>
- 字符串引号嵌套
JS可以用单引号嵌套双引号,或者用 双引号嵌套单引号 (外双内单,外单内双)
<script>
var str1 = "格子学'前端''";
var str2 = "格子学'前端'";
</script>
- 字符串转义符
类似HTML里面的特殊字符,字符串中也有特殊字符,我们称之为转义符。转义符都是\
开头的,常用的转义符及其说明如下:
转义符 | 解释说明 |
---|---|
\n | 换行符,n是newline |
\ \ | 斜杠\ |
\ ’ | ’ 单引号 |
\ ‘’ | ‘’ 双引号 |
\ t | tab 缩进 |
\ b | 空格,b是blank的意思 |
- 字符串长度
我们可以通过字符串String的length
属性来得到字符串的长度
<script>
var str = "格子";
console.log(str.length); //2
</script>
- 字符串的拼接
多个字符串之间可以使用+
进行拼接,其拼接方式为 字符串+
任何类型=
拼接之后的新字符串
<script>
var str = "格子";
var score=18;
console.log(str+score); //格子18
</script>
1.1.3 Boolean
- 布尔类型有两个值:
true
和false
,其中true
表示真,而false
表示假 - 布尔型和数字型相加的时候,
true
的值为 1 ,false
的值为 0
<script>
var flag = true;
console.log(flag * 2); //2
//在进行加减乘除计算时Boolean类型的变量的值可看作1或者0
</script>
1.1.4 undefined
- 一个声明后没有被赋值的变量会有一个默认值
undefined
- 值为
undefined
的变量与一个字符串型变量相加结果是将undefined
当作字符串来看待 - 值为
undefined
的变量与一个数字型变量相加,结果是NaN
<script>
var index;
console.log(index); //undifined
console.log(index+"of"); //indexof
console.log(index+19); //NaN
</script>
1.1.5 null
赋给变量 null
值,里面存的值为空
<script>
var flag = null;
console.log(flag+"格子"); //flag格子
console.log(flag+1); //1
</script>
1.1.5 typeof
typeof
可用来获取检测变量的数据类型
<script>
var age = 18;
var flag = true;
var str = "格子";
var index;
var kk = null;
console.log(typeof (age)); //number
console.log(typeof (flag)); //boolean
console.log(typeof (str)); //string
console.log(typeof (index)); //undefined
console.log(typeof (kk)); //object
</script>
tips:
- 存储
null
的变量的类型是object
2.数据类型转换
使用表单、prompt获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算,而需要转换变量的数据类型。通俗来说,就是把一种数据类型的变量转换成另外一种数据类型。
①转换为字符串型
方式 | 说明 | 案例 |
---|---|---|
toString() | 转成字符串 | var num = 1; alert(num.toString()); |
String() | 转成字符串 | var num = 1; alert(String(num)); |
加号拼接字符串 | 和字符串拼接的结果都是字符串 | var num =1; alert(num+“格子学前端”); |
<script>
var index1 = 18;
var index2 = 19;
var index3 = 20;
console.log(index1.toString()); //toString()
console.log(String(index2)); //String()
console.log(index3 + '格子'); //'+'强制连接
//输出: 18 19 20格子
</script>
②转换为数字型
方式 | 说明 | 案例 |
---|---|---|
parselnt(string) 函数 | 将string类型转成整数数值型 | parselnt(‘18’) |
parseFloat(string) 函数 | 将string类型转成浮点数数值型 | parseFloat(‘18.18’) |
Number() 强制转换函数 | 将string类型转换为数值型 | Number(‘12’) |
js 隐式转换(- * /) | 利用算术运算隐式转换为数值型 | ‘12’-0 |
<script>
//parseInt()
console.log(parseInt('18')); //18
console.log(parseInt('18.18')); //18,截去小数部分
//parseFloat()
console.log(parseFloat('18.99')); //18.99
//Number
console.log(Number('1888')); //1888
</script>
③转换为布尔型
方法 | 说明 | 案例 |
---|---|---|
Boolean()函数 | 其他类型转成布尔值 | Boolean(‘true’); |
- 代表空,否定的值会被转换为false,如 ’ ’ , 0, NaN , null , undefined
- 其余的值都会被被转换为true
<script>
console.log(Boolean('')); //false
console.log(Boolean(NaN)); //false
console.log(Boolean(null)); //false
console.log(Boolean(undefined)); //false
console.log(Boolean(18)); //true
console.log(Boolean('格子')); //true
</script>