WEBSTORM前端 —— 第4章:JavaScript —— 第3节:数据类型与类型转换
目录
一、数据类型
JS 数据类型整体分为两大类:基本数据类型 与 引用数据类型
![]()
1-1.数据类型 – 数字类型(Number)
即我们数学中学习到的数字,可以是整数、小数、正数、负数。 JavaScript 中的正数、负数、小数等 统一称为 数字类型。

注意事项:JS 是弱数据类型,变量到底属于那种类型,只有赋值之后,我们才能确认 。 Java是强数据类型 例如 int a = 3 必须是整数。
数字可以有很多操作,比如,乘法 * 、除法 / 、加法 + 、减法 - 等等,所以经常和算术运算符一起。
数学运算符也叫算术运算符,主要包括加、减、乘、除、取余(求模)。
- +:求和
- -:求差
- *:求积
- /:求商
- %:取模(取余数)
- 开发中经常作为某个数字是否被整除
<!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>
</head>
<body>
<script>
// js 弱数据类型的语言 只有当我们赋值了,才知道是什么数据类型
// let num = 'pink'
// let num = 10.11
// console.log(num)
console.log(1 + 1)
console.log(1 * 1)
console.log(1 / 1)
console.log(4 % 2) // 求余数
console.log(5 % 3) // 求余数 2
console.log(3 % 5) // 求余数 3
// java 强数据类型的语言 int num = 10
console.log('pink老师' - 2)
console.log(NaN - 2)
console.log(NaN + 2)
console.log(NaN / 2)
console.log(NaN === NaN)
</script>
</body>
</html>
JavaScript算术运算符执行的优先级顺序 :同时使用多个运算符编写程序时,会按着某种顺序先后执行,我们称为优先级。 JavaScript中 优先级越高越先被执行,优先级相同时以书从左向右执行。
- 乘、除、取余优先级相同
- 加、减优先级相同
- 乘、除、取余优先级大于加、减
- 使用 () 可以提升优先级
总结: 先乘除后加减,有括号先算括号里面的~~~


案例:计算圆的面积
需求:对话框中输入圆的半径,算出圆的面积并显示到页面
分析:
①:面积的数学公式: π*r²
②:转换为JavaScript写法 : 变量 * r * r
<!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>
</head>
<body>
<script>
// 1. 页面弹出输入框
let r = prompt('请输入圆的半径:')
// 2. 计算圆的面积(内部处理)
let re = 3.14 * r * r
// 3. 页面输出
document.write(re)
// NaN not a number
</script>
</body>
</html>
----------------------------------------------------------------------------------------------
1-2.数据类型 – 字符串类型(string)
通过单引号( '') 、双引号( "")或反引号( ` ) 包裹的数据都叫字符串,单引号和双引号没有本质上的区别,推荐使用单引号。

①注意事项
1.无论单引号或是双引号必须成对使用
2.单引号/双引号可以互相嵌套,但是不以自已嵌套自已(口诀:外双内单,或者外单内双)
3.必要时可以使用转义符\,输出单引号或双引号
②字符串拼接
③模板字符串
使用场景:拼接字符串和变量 ; 在没有它之前,要拼接变量比较麻烦
语法:``(反引号) ; 在英文输入模式下按键盘的tab键上方那个键(1左边那个键); 内容拼接变量时,用${}包住变量
![]()
案例:页面输出用户信息案例
需求:页面弹出对话框,输入名字和年龄,页面显示:大家好,我叫xxx,今年xx岁了
<!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>
</head>
<body>
<script>
// let age = 20
// // 模板字符串 外面用`` 里面 ${变量名}
// document.write(`我今年${age}岁了`)
let uname = prompt('请输入您的姓名:')
let age = prompt('请输入您的年龄:')
// 输出
document.write(`大家好,我叫${uname}, 我今年贵庚${age}岁了`)
</script>
</body>
</html>
1-3.数据类型–布尔类型(boolean)

1-4.数据类型–未定义类型(undefined)
1-5.数据类型–null(空类型)
- undefined:表示没有赋值
- null表示赋值了,但是内容为空
<!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>
</head>
<body>
<script>
// 1. true false 是布尔型字面量
// console.log(3 > 4)
// let isCool = false
// console.log(isCool)
// 2. 未定义类型 弱数据类型 声明一个变量未赋值就是 undefined
// let num
// console.log(num)
// 3. null 空的
// let obj = null
// console.log(obj)
// 计算有区别
console.log(undefined + 1) // NaN
console.log(null + 1) // 1
</script>
</body>
</html>
二、检测数据类型
1.控制台输出语句
- 控制台语句经常用于测试结果来使用。
- 可以看出数字型和布尔型颜色为蓝色,字符串和undefined颜色为灰色
2.通过typeof关键字检测数据类型
<!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>
</head>
<body>
<script>
let num = 10
console.log(typeof num)
let str = 'pink'
console.log(typeof str)
let str1 = '10'
console.log(typeof str1)
let flag = false
console.log(typeof flag)
let un
console.log(typeof (un))
let obj = null
console.log(typeof obj)
let num1 = prompt('请输入第一个数:')
console.log(typeof num1)
</script>
</body>
</html>
三、类型转换
1.为什么需要类型转换
- JavaScript是弱数据类型:JavaScript也不知道变量到底属于那种数据类型,只有赋值了才清楚。
- 坑:使用表单、prompt获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算。
2.隐式转换
①规则
- +号两边只要有一个是字符串,都会把另外一个转成字符串
- 除了+以外的算术运算符比如-*/等都会把数据转成数字类型
②缺点
③小技巧
- +号作为正号解析可以转换成数字型
- 任何数据和字符串相加结果都是字符串


<!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>
</head>
<body>
<script>
console.log(1 + 1)
console.log('pink' + 1)
console.log(2 + 2)
console.log(2 + '2') // 22
console.log(2 - 2)
console.log(2 - '2') // 0
console.log(+12)
console.log(+'123') // 转换为数字型
</script>
</body>
</html>
3.显式转换
①概念
②转换为数字型
- 转成数字类型
- 如果字符串内容里有非数字,转换失败时结果为NaN(NotaNumber)即不是一个数字
- NaN也是number类型的数据,代表非数字
- 只保留整数
- 可以保留小数
③转换为字符型
<!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>
.box {
width: 50px;
height: 50px;
}
</style>
</head>
<body>
<script>
let str = '123'
console.log(Number(str))
console.log(Number('pink'))
// let num = Number(prompt('输入年薪'))
// let num = +prompt('输入年薪')
// console.log(Number(num))
// console.log(num)
console.log(parseInt('12px'))
console.log(parseInt('12.34px'))
console.log(parseInt('12.94px'))
console.log(parseInt('abc12.94px'))
// -------------------
console.log(parseFloat('12px')) // 12
console.log(parseFloat('12.34px')) // 12.34
console.log(parseFloat('12.94px')) // 12.94
console.log(parseFloat('abc12.94px')) // 12.94
</script>
</body>
</html>
4.练习
输入2个数,计算两者的和,打印到页面中
<!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>
</head>
<body>
<script>
// 1. 用户输入 prompt 得到是字符串类型 要转换为 数字型
let num1 = +prompt('请输入第一个数字:')
let num2 = +prompt('请输入第二个数字:')
// 2. 输出
alert(`两个数相加的和是:${num1 + num2}`)
</script>
</body>
</html>
四、实战演练——用户订单信息案例
1.需求
2.分析1
3.分析2
4.常见错误1
const声明的时候必须要赋值,进行初始化
5.常见错误2


- 提示age变量没有定义过
- 很可能age变量没有声明和赋值
- 或者我们输出变量名和声明的变量不一致引起的(简单说写错变量名了)
6.常见错误3



- 提示“age”已经声明
- 很大概率是因为重复声明了一个变量。
- 注意let或者const不允许多次声明同一个变量
7.常见错误4



- 常量被重新赋值了
- 常量不能被重新赋值
8.常见错误5

- 因为prompt获取过来的是字符型,所以会出现字符相加的问题
- prompt如果出现相加记得要转为数字型,可以利用+最简单

9.源代码
<!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;height: 80px;margin: 0 auto;text-align: center;}
th {padding: 5px 30px;}
table,
th,
td {border: 1px solid #000;}
</style>
</head>
<body>
<h2>订单确认</h2>
<script>
// 1 用户输入
let price = +prompt('请输入商品价格:')
let num = +prompt('请输入商品数量:')
let address = prompt('请输入收获地址:')
// 2.计算总额
let total = price * num
// 3.页面打印渲染
document.write(`<table>
<tr><th>商品名称</th><th>商品价格</th><th>商品数量</th><th>总价</th><th>收货地址</th>
</tr>
<tr><td>小米青春版PLUS</td><td>${price}元</td><td>${num}</td><td>${total}元</td><td>${address}</td>
</tr>
</table>`)
</script>
</body>
</html>
更多推荐



所有评论(0)