目录
五、转换为字符串(toString()方法 、String()函数——强制(显示)类型转换)
小白一个。此笔记来自于跟尚硅谷老师学习,自己所写,用于自我复习。若对码友有用可参考。
数据类型,指那些可以赋值给变量的值,JS中的数据类型由原始值和对象共同组成。
javascript中一共有七种原始值:
1.数值(Number)
2.大整数(Bigint)
3.字符串(String)
4.布尔值(Boolean)
5.空值(Null)
6.未定义(Undefined)
7.符号(Symbol)
其中原始值是构成各种数据的基石
原始值在JS中是不可变类型,一旦创建就不能修改
为什么需要数据类型?
在计算机中,不同的数据所需占用的存储空间是不同的,为了便于把数据分析所需内存大小不同的数据,充分利用存储空间,于是定义了数据类型。
一、数值(Number)和大整数(Bigint)
数值(Number)
- 在JS中所有的整数和浮点数都是Number类型
- JS中的数值并不是无限大的,当数值超过一定范围后会显示近似值
数字型范围(最大和最小值)
Number.MAX_VALUE
Number.MIN_VALUE
- 数值的三个特殊值
Infinity 表示无穷大,大于任何数值
-Infinity 表示无穷小,小于任何数值
NaN(Not a Number) 也是一个特殊的数值,表示非法的数值,非数值
- 所以在JS中进行一些精度比较高的运算时要十分注意
- isNaN(变量)
用来判断一个变量是否为非数字的类型,不是数字,返回true;是数字,返回false
大整数(BigInt)
- 大整数用来表示一些比较大的整数
- 大整数使用 n 结尾,它可以表示的数字范围是无限大
如:a = 9999999999999999999999999n
注:数值和大整数不能直接进行运算,否则会报错
其它进制的数字:
二进制 以0b开头 如0b1010,
八进制 以0o开头
十六进制 以0x开头
注:输出的数字均以十进制输出,创建可以使用其他进制
<script>
a = 0b1010;
console.log(a)//控制台输出10
</script>
二、类型检查(typeof)
使用typeof 运算符 进行类型检查 语法: typeof 变量
- typeof 用来检查不同的值的类型
- 它会根据不同的值返回不同的结果,返回的是字符串(检查的是变量的值的类型,在JS中变量是没有类型的)
<script>
let a = 10
console.log(typeof a)
</script>
三、字符串(String)
- 字符串
- 在JS中使用单引号或双引号来表示字符串(字符串不能跨行,若想跨行,则在每行末尾处添加一个转义字符(反斜杠) \ )
<script>
let a = '今天天气\
真不错!'
console.log( a)
</script>
- 转义字符 \
\" --> "
\' --> '
\\ --> \
\t --> 制表符
\n --> 换行 n是newline的意思
\b --> 空格,b是blank的意思
- 模板字符串(长字符串)
- 使用反单引号 ` ` 来表示模板字符串(可以跨行使用)
- 模板字符串中可以嵌入变量,使用 ${变量名}
- 使用typeof检查一个字符串时会返回 "string"(加引号说明返回的是字符串)
<script>
let name = '孙悟空'
let str = `你好,${name}`
console.log(str) //输出 你好,孙悟空
let b = 10;
console.log(`b = ${b}`);
</script>
四、其他数据类型(布尔值、空值、未定义、符号)
布尔值(Boolean)
- 布尔值主要用来逻辑判断
- 布尔值只有两个 true 和 false
- 使用 typeof 检查一个布尔值时会返回 "boolean"
空值(Null)
- 空值用来表示空对象
- 空值只有一个 null
- 使用 typeof 检查一个空值时会返回 "object"
- 所以使用 typeof 无法检查空值
未定义(Undefined)
- 当声明一个变量而没有赋值时,它的值就是Undefined
- Undefined类型的值只有一个就是 Undefined
- 使用 typeof 检查一个Undefined类型的值时,会返回"undefined"。
- undefined 和字符串相加得到 undefined字符串。
- undefined 和数字相加得到NaN
<script>
let b;
console.log(b)// 代码输出打印:undefined
</script>
符号(Symbol)
- 用来创建一个唯一的标识
- 使用 typeof 检查符号时会返回 "symbol"
<script>
let c = Symbol()//调用Symbol()函数创建了一个符号
console.log(c)
</script>
类型转换
类型转换指将一种数据类型转换为其他类型
主要是将其他类型转换为字符串、数值和布尔值
五、转换为字符串(toString()方法 、String()函数——强制(显示)类型转换)
1.调用 toString( ) 方法 将其他类型转换为字符串
- 调用xxx的yyy方法: xxx.yyy( )
- 由于 null 和 undefined 中没有 toString( ) ,所以对这两个调用 toString() 时会报错
注:xxx.toString()只是将xxx转换为字符串了,若想输出或使用,需将其赋值给变量才能使用
<script>
let a = 100;
console.log(typeof a,a);
//a.toString()只是创建字符串"100"
a = a.toString();
console.log(typeof a, a)
</script>
2.调用 String()函数 将其他类型转换为字符串,语法 String(xxx)
- 调用xxx函数:xxx()
注:String( )函数只是将xxx转换为字符串了,若想输出或使用,需将其赋值给变量才能使用
- 原理:
对于拥有 toString()方法的值调用 String()函数时,实际上就是在调用toString()方法
对于 null ,则直接转换为"null"
对于 undefined,直接转换为"undefined"
由此可见,String()函数的范围更广,故一般使用 String() 将其转换为字符串。
<script>
let b = 33;
console.log(typeof b,b);
b = String(b);
console.log(typeof b,b)
</script>
六、转换为数值
将其他数据类型转换为数值
1.使用 Number()函数 来将其它类型转换为数值
注:Number()函数只是将xxx转换为数值了,若想输出或使用,需将其赋值给变量才能使用。
转换的情况:
- 字符串
- 如果字符串是一个合法的数字(如"12443"),则会自动转换为对应的数字;
- 如果字符串不是一个合法数字(不是纯数字的字符串,如"122adds2"、"adds2","qww"等),则转换为NaN;
- 如果字符串时空串或者纯空格的字符串,则转换为0;
- 布尔值
- true转换为1,false转换为0
- null 转换为0
- undefined 转换为NaN
2.专门用来将字符串转换为数值的两个方法(parseInt()函数,parseFloat()函数)
parseInt()函数—— 将一个字符串转换为一个整数
- 解析(parse)时,会自左向右读取一个字符串,直到读取到字符串中所有的有效整数
若第一个不是有效数字,则转换为 NaN, 如字符串"ad231.22";
若第一个是有效整数,则转换到该有效数字结束为止,如"2123ass334"转换为2123,"123.33"转换为123
parseFloat()函数—— 将一个字符串转换为浮点数
- 解析时,会自左向右读取一个字符串,直到读取到字符串中所有的有效小数
null 和 undefined 通过parseInt()函数,parseFloat()函数均转换为NaN
当执行parseInt()函数和parseFloat()函数时,当传的值不是字符串时,它会先把其转换为字符串再进行转换。如:
<script>
let a = 231.22
a = parseInt(a)
console.log(typeof a, a)//输出打印:number 231
</script>
- 所以也可以使用 parseInt() 函数来对一个数字进行取整
七、转换为布尔值(Boolean()函数)
使用 Boolean()函数 来将其他类型转换为布尔值
注:Boolean()函数只是将xxx转换为布尔值了,若想输出或使用,需将其赋值给变量才能使用。
- 转换的情况:
数字:
- 除 0 和 NaN 转换为 false, 其余都是 true
字符串:
- 空串转换为false, 其余是true(包括纯空格的字符串也转换为true)
null 和 undefined 都转换为false
对象:对象都会转换为true
- 所有表示空性的没有的错误的值都会转换为 false: 0、NaN 、空串、null 、undefined、false。
八、类型转换的总结
类型转换的总结:
1.转换为字符串
显式转换: String()函数、toString()方法(但是对于null和undefined调用该方法时会报错)
隐式转换: 任意值 + ''(空串)"
2.转换为数值
显式转换:Number()函数
parseInt()函数和parseFloat()函数 (分别专门用来将字符串转换为整数和 浮点数)
隐式转换: +(一元的加)
3.转换为布尔值
显式转换:Bollean()函数
隐式转换: !!(两次取反)
九、解释型语言和编译型语言
十、案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
h2 {
text-align: center;
}
table {
/* 合并边框 */
border-collapse: collapse;
margin: 0 auto;
height: 80px;
text-align: center;
}
table th {
padding: 5px 30px;
}
table,
th,
td {
border: 1px solid #333;
}
</style>
</head>
<body>
<h2>2020年12月消费支出</h2>
<script>
let total = +prompt('总额')
let water = +prompt('水费')
let ele = +prompt('电费')
let net = +prompt('网费')
let rem = total - water - ele - net
document.write(`
<table>
<tr>
<th>银行卡余额</th>
<th>水费</th>
<th>电费</th>
<th>网费</th>
<th>银行卡余额</th>
</tr>
<tr>
<td>${total}元</td>
<td>${water}元</td>
<td>${ele}元</td>
<td>${net}元</td>
<td>${rem}元</td>
</tr>
</table>
`)
</script>
</body>
</html>