一、变量
1.什么是变量![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/08cdc5b46d4436dde61d485ea81d7684.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a76d18c51d7ccdceb98e3f1e198b15a1.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c7fc70e804b3b9e2ccb50b93e6c5b28a.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3805c8d63d8b0b7956241b9b5415d14d.png)
2.变量的基本使用![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f09ed2e39cefaeb0927927c9bd881b19.png)
(1)变量的声明
(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>变量的使用</title>
</head>
<body>
<script>
// 1. 声明一个年龄变量
// let age
// 2. 赋值 赋值号 = 在编程语言中都是把右边给左边
// age = 99
// console.log(age)
// 3. 声明的同时直接赋值
// 声明变量的时候给它赋初值 变量的初始化
// let age = 18
// 小案例
// 变量名不加引号 字符串才加 双击复制,双击粘贴
let num = 20
let uname = '张三'
console.log(num)
console.log(uname)
</script>
</body>
</html>
3.变量的更新以及输入用户名案例
(1)变量的更新
行后报错的插件 error lens
代码
<!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>变量的更新</title>
</head>
<body>
<script>
// let age = 18
// 让后面的去覆盖前面的
// age = 19
// 变量不可以重复声明,会报错
// let age = 19
// console.log(age)
// 2. 声明多个变量
/* let age = 18, uname = '迪丽热巴'
console.log(age, uname) */
// 提倡的声明方式
let age = 18
let uname = '迪丽热巴'
console.log(age, uname)
</script>
</body>
</html>
(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>输入用户名案例</title>
</head>
<body>
<script>
// 输出用户名案例
// 1. 用户输入
// prompt('请输入姓名')
// 2. 内部处理: 保存数据
// prompt()是一个函数,会得到一个结果,我们可以直接拿过来在一行上写
let uname = prompt('请输入姓名')
// 3. 打印输出
document.write(uname)
</script>
</body>
</html>
(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>交换两个变量案例</title>
</head>
<body>
<script>
let num1 = 10
let num2 = 20
let temp
// 都是把右边给左边
temp = num1
num1 = num2
num2 = temp
console.log(num1, num2)
</script>
</body>
</html>
4.变量的本质和命名规则
(1)变量的本质![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3eb4f3ce3730da34214a1ebf4f2c6729.png)
(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>输入姓名年龄案例</title>
</head>
<body>
<script>
// 1. 姓名
// 输入的同时会得到一个值 把这个值保存起来 可以写在一起
// prompt('请输入姓名')
let uname = prompt('请输入姓名')
let age = prompt('请输入年龄')
let gender = prompt('请输入性别')
document.write(uname, age, gender)
</script>
</body>
</html>
(3)变量扩展-let和var的区别
代码
<!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>let和var的区别</title>
</head>
<body>
<script>
/* var num
console.log(num)
num = 10 */
/* num = 10
console.log(num)
var num */
/* var num = 10
var num = 20
console.log(num) */
// let就解决了这种问题,还没声明就使用,let会报错
num = 10
console.log(num)
let num
// let不允许多次声明
/* let num = 20
let num = 10
console.log(num) */
</script>
</body>
</html>
5.数组的基本使用
代码
<!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>数组的基本使用</title>
</head>
<body>
<script>
// let arr = [10,20,30]
// 1. 声明数组 有序
// 逗号后面加一个空格 看起来更专业
32// 出现汉字一定要加引号 单引号双引号都可以
let arr = ['小杨', '小李', '小熊']
// 2. 使用数组 数组名[索引号] 从0开始
// console.log(arr)
console.log(arr[0]) //小杨
// 尽量不要有这种情况 高版本浏览器能解析 低版本不行
/* let 刘德华 = 10
console.log(刘德华) */
// 3. 数组长度 = 索引号 + 1
console.log(arr.length)
</script>
</body>
</html>
代码
<!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>数组取值案例</title>
</head>
<body>
<script>
let arr = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
console.log(arr[6])
</script>
</body>
</html>
二、常量
代码
<!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>常量</title>
</head>
<body>
<script>
// 常量 不允许更改值
const PI = 3.14
console.log(PI)
// 常量不可以再次赋值,而变量可以
PI = 3.15
console.log(PI)
// 2. 常量声明的时候必须赋值,变量可以不用
// const PI
</script>
</body>
</html>
三、数据类型
1.基本数据类型
(1)数字类型
代码
<!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>基本数据类型-数字型</title>
</head>
<body>
<script>
// js 弱数据类型的语言
// 只有当我们赋值了 才知道是什么数据类型
/* let num = 'black'
console.log(num) */
// java 强数据类型的语言 int num = 10
console.log(1 + 1)
console.log(1 * 1)
console.log(1 / 1)
console.log(4 % 2) //求余数
console.log(3 % 5) //余3 结果是前面小的那个数
// 余数经常用来判断是否是整数 比如判断这一年是否是闰年 比如所有偶数相加 能被2整除的就是偶数
// NaN not a number
console.log('black' - 6)
console.log(NaN + 7)
console.log(NaN === NaN) //NaN自己都不等于NaN 结果是false
</script>
</body>
</html>
代码
<!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>计算圆的面积</title>
</head>
<body>
<script>
// 1. 页面弹出输入框
let r = prompt('请输入圆的半径:')
// 2. 计算圆的面积(内部处理)
let result = 3.14 * r * r
// 3. 页面输出
document.write(result)
</script>
</body>
</html>
not a number
(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>字符串类型</title>
</head>
<body>
<script>
let str = 'blue'
let str1 = "pink"
// 反引号
let str2 = `反引号`
console.log(str2)
console.log(11)
// 字符串
console.log(`11`)
console.log(str)
console.log('str')
// 找离它最近的一个单引号配对
console.log('海上月是天上月,"眼前人是心上人"')
// 单引号找离他最近的一个配对 就会出错
// console.log('海上月是天上月,'眼前人是心上人'')
// 转义字符
console.log('海上月是天上月,\'眼前人是心上人\'')
console.log(1 + 1)
// 字符串的拼接
console.log('1' + '1')
let age = 19
document.write('我今年' + age)
document.write('我今年', age)
document.write('我今年age')
</script>
</body>
</html>
代码
<!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>模板字符串</title>
</head>
<body>
<script>
// let age = 18
// 模板字符串 外面用反引号包含 里面${变量名}
// document.write(`我今年${age}岁了`)
let uname = prompt('请输入您的姓名:')
let age = prompt('请输入您的年龄:')
// 输出
document.write(`大家好,我叫${uname},今年${age}岁了`)
</script>
</body>
</html>
(3)布尔类型
(4)未定义类型
(5)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>其它三种类型</title>
</head>
<body>
<script>
//1. true false 是布尔型字面量
/* let isCool = true
console.log(isCool)
console.log(3 > 4) */
//2. 未定义类型 声明一个变量未赋值就是 undefined js弱数据类型
/* let num
console.log(num) */
// 3. null 空的
let obj = null
console.log(obj)
// undefined和null在计算上有区别
console.log(undefined + 1) //NaN
console.log(null + 1) //1
</script>
</body>
</html>
2.检测数据类型
(1)控制台
(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>检测数据类型</title>
</head>
<body>
<script>
let num = 9
console.log(typeof num)
let str = '10'
console.log(typeof str)
let str1 = 'pink'
console.log(typeof str1)
let flag = false
console.log(typeof flag)
let un
console.log(typeof un)
let obj = null
console.log(typeof obj)
</script>
</body>
</html>