目录
一、程序中变量的数据
![](https://i-blog.csdnimg.cn/blog_migrate/b7a549c1184739b0090ad149ee36a058.png)
二、变化数据的记录 – 变量
![](https://i-blog.csdnimg.cn/blog_migrate/73743bae51ca50375a59bd7a96c6fa72.png)
三、变量的命名格式
![](https://i-blog.csdnimg.cn/blog_migrate/b4f9718551dd00e1595ba09866cf61cf.png)
四、 变量的命名规范
![](https://i-blog.csdnimg.cn/blog_migrate/602abc6dc3a80f8fe82f8cac035fad35.png)
<!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引擎接下来我要定义一个变量)
// var关键字
// 第二步: 变量的赋值(使用=赋值即可)
// var currentTime = "16:00"
// 其他的写法一:
// var currentTime;
// currentTime = "16:02";
// currentTime = "17:00";
// 其他的写法二: 同时声明多个变量(不推荐, 阅读性比较差)
// var name, age, height
// name = "why"
// age = 18
// height = 1.88
var name = "why", age = 18, height = 1.88;
// 补充:
// 1.当我们打印变量时, 实际上是在打印变量中保存的值
// 2.console.log(参数1, 参数2, 参数3...........)
console.log(name, age, height);
</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>Document</title>
</head>
<body>
<script>
// 规则: 必须遵守
// 规范: 建议遵守
// 1.多个单词, 建议使用驼峰标识(小驼峰)
// 小驼峰(currentTime)/大驼峰(CurrentTime)
// 2.推荐=的左右两边加上空格
var currentTime = "16:18";
var currentPrice = "¥100";
</script>
</body>
</html>
五、变量的练习
![](https://i-blog.csdnimg.cn/blog_migrate/a23fd4f0b071154fe37cd3980d6e2efc.png)
<!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>
// 练习一: 定义变量保存个人信息
var name = "why"
var age = 18
var height = 1.88
var weight = 160
var address = "广州市"
// 修改变量的值(重新赋值)
age = 19
height = 1.90
weight = 165
address = "深圳市"
// 练习二: 将一个变量的值, 赋值给另外一个变量
var nickname = "coderwhy"
var admin = nickname
console.log(nickname, admin) // coderwhy coderwhy
// 练习三: 定义两个变量保存两个数字, 对两个变量中的数字进行交换
var num1 = 10
var num2 = 20
// 方法一: 借助第三个变量
// console.log("交换前, num1, num2:", num1, num2)
// var temp = num1
// num1 = num2
// num2 = temp
// console.log("交换后, num1, num2:", num1, num2)
// 方法二: 不借助于第三个变量完成交换(了解, 笔试面试题)
console.log("交换前, num1, num2:", num1, num2)
num1 = num1 + num2 // num1: 30, num2: 20
num2 = num1 - num2 // num1: 30, num2: 10
num1 = num1 - num2 // num1: 20, num2: 10
console.log("交换后, num1, num2:", num1, num2)
// 练习四: 接受用户输入一个值, 并且使用一个变量来保存
var inputInfo = prompt("请输入一个值吧!")
console.log(inputInfo)
</script>
</body>
</html>
六、变量的使用注意
![](https://i-blog.csdnimg.cn/blog_migrate/fc97f25930c04a03314599ce47dc9b4c.png)
<!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>
// 注意事项一: 如果一个变量未声明就直接使用, 那么会直接报错
// var currentAge = age
// var name = "why"
// console.log(message)
// 注意事项二: 如果一个变量有声明, 但是没有赋值操作
// var info
// console.log(info)
// 注意事项三: 在JavaScript中也可以不使用var在全局声明一个变量(不推荐)
// 如果不使用var来声明一个变量, 也是可以声明成功的, 并且这个变量会被加入window对象
address = "广州市"
console.log(address)
</script>
</body>
</html>
七、 JavaScript的数据类型
![](https://i-blog.csdnimg.cn/blog_migrate/064b22dc69dc8a36876099e0f34634d7.png)
<!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>
// 一串文本组成, 称之为是一个字符串
var description = "了解真相, 你才能获得真正的自由!"
description = 123
console.log(description)
// 其他语言中声明一个变量如何指定类型
// java
// String description = "了解真相, 你才能获得真正的自由!";
// description = 123
// swift: 自动类型推导
// var description = "了解真相, 你才能获得真正的自由!"
// description = 123
</script>
</body>
</html>
八、typeof操作符
![](https://i-blog.csdnimg.cn/blog_migrate/e8b1038cb68f6962aa070b6421b089e4.png)
<!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.typeof基本演练
var info = "why"
// info = 18
// info = {}
console.log( typeof info )
// 2.typeof的其他类型
var age
console.log(typeof age)
// 3.null的操作
var address = null
console.log(typeof address)
// 4.()的作用
// ()表示的是调用函数
// alert()
// ()将某一个表达式当做一个真题
var result = (2 + 3) * 4
console.log(typeof(info))
console.log(typeof(String))
</script>
</body>
</html>
九、Number类型(一)
![](https://i-blog.csdnimg.cn/blog_migrate/b21e14a2633a640ad3be18c8dc7df29c.png)
十、Number类型(二)
![](https://i-blog.csdnimg.cn/blog_migrate/b9f480886fbb062126a0ec0c2ae9f48a.png)
<!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.Number类型的基本使用
var age = 18
var height = 1.88
// 2.特殊的数值
// Infinity
var num1 = Infinity
var num2 = 1 / 0
console.log(num1, num2)
// NaN: not a number(不是一个数字)
var result = 3 * "abc"
console.log(result)
console.log(isNaN(result))
// 3.进制表示
var num3 = 100 // 十进制
// 了解
var num4 = 0x100 // 十六进制
var num5 = 0o100 // 八进制
var num6 = 0b100 // 二进制
console.log(num4, num5, num6)
// 5.数字可以表示的范围
var max = Number.MAX_VALUE
var min = Number.MIN_VALUE
console.log(max, min)
</script>
</body>
</html>
十一、String类型(一)
![](https://i-blog.csdnimg.cn/blog_migrate/7def897d12531eff995d4b400a388b54.png)
十二、字符串中的转义字符
![](https://i-blog.csdnimg.cn/blog_migrate/3cbfb1b80fc84a2f55920a77ee3ba89c.png)
十三、字符串的属性和方法
![](https://i-blog.csdnimg.cn/blog_migrate/d03980f97568eaffa7b6e2775fbedec5.png)
<!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.String基本使用
var name = "coderwhy"
var address = "广州市"
var intro = "认真是一种可怕的力量!"
// 2.别的引号的使用
// 单引号
var message1 = 'Hello World'
// 双引号
var message2 = "Hello World"
// 反引号(ES6新增语法)
// ${变量/表达式}
var message3 = `Hello World, ${name}, ${2 + 3}`
// 3.转义字符: 字符串本身中包含引号
var message4 = 'my name is "coderwhy"'
console.log(message4)
var message5 = 'my name \\ \'\' is "coderwhy"'
console.log(message5)
// 4.<字符串>本身有的方法和属性
var message = "Hello World"
console.log(message.length)
// 字符串操作
var nickname = "coderwhy"
var info = "my name is "
var infoStr = `my name is ${nickname}` // 推荐(babel)
var infoStr2 = info + nickname
console.log(infoStr, infoStr2)
</script>
</body>
</html>
十四、Boolean类型
![](https://i-blog.csdnimg.cn/blog_migrate/154d2ee15af18bd4c843294b46e91c7f.png)
<!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.Boolean基本使用
var isLogin = false
var isAdmin = true
</script>
</body>
</html>
十五、Undefined类型
![](https://i-blog.csdnimg.cn/blog_migrate/873c57eb8764096734466664e9e3198e.png)
<!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>
var message
var info = undefined // 不推荐
console.log(message, info)
</script>
</body>
</html>
十六、Object类型
![](https://i-blog.csdnimg.cn/blog_migrate/305d2b7f097b81ca07a516f94504918b.png)
十七、Null类型
![](https://i-blog.csdnimg.cn/blog_migrate/6198aa56e192b4d338b5197e4416c112.png)
<!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.Object类型的基本使用
// var name = "why"
// var age = 18
// var height = 1.88
var person = {
name: "why",
age: 18,
height: 1.88
}
console.log(person)
// 2.对象类型中某一个属性
console.log(person.name)
// 3.Null类型
// 3.1. 其他类型的初始化
var age = 0
var num = 0
var message = "" // 空字符串
var isAdmin = false
// Null存在的意义就是对 对象进行初始化的, 并且在转成Boolean类型时, 会转成false
var book = null
console.log(typeof book) // object
</script>
</body>
</html>
十八、数据类型总结
![](https://i-blog.csdnimg.cn/blog_migrate/934c940533c04b4dd10b6d13de381562.png)
十九、数据类型的转换
![](https://i-blog.csdnimg.cn/blog_migrate/b1261a624e14637a0d4896e3f1725cf9.png)
<!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>
// 什么是数据类型的转换
// var numStr = "1234"
// var result = numStr
// console.log(typeof result)
var isAdmin = true
var result2 = 10 + isAdmin // isAdmin -> 1
console.log(result2)
console.log(String(true))
</script>
</body>
</html>
二十、字符串String的转换
![](https://i-blog.csdnimg.cn/blog_migrate/f074027b9735125d880aaca09b14a6fd.png)
<!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>
var num1 = 123
var age = 18
var isAdmin = true
// 1.转换方式一: 隐式转换(用的非常多)
var num1Str = num1 + ""
var ageStr = age + ""
var isAdminStr = isAdmin + ""
console.log(typeof num1Str, typeof ageStr, typeof isAdminStr)
// 2.转换方式一: 显示转换
var num1Str2 = String(num1)
console.log(typeof num1Str2)
</script>
</body>
</html>
二十一、数字类型Number的转换
![](https://i-blog.csdnimg.cn/blog_migrate/15e582fb61072a0f17a8ff89713768d9.png)
<!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>
// 方式一: 隐式转换(用的很少)
var num1 = "8"
var num2 = "4"
var result1 = num1 + num2 // 84
console.log(typeof result1)
var result2 = num1 * num2
console.log(result2)
// 方式二: 显示转换(Number())
var result3 = Number(num1)
console.log(typeof result3)
// 其他类型转成数字类型的规则:
console.log(Number(undefined)) // NaN
console.log(Number(true)) // 1
console.log(Number(false)) // 0
console.log(Number(null)) // 0
console.log(Number("abc123")) // NaN
console.log(Number(" 123 ")) // 123
console.log(Number("")) // 0
</script>
</body>
</html>
二十二、布尔类型Boolean的转换
![](https://i-blog.csdnimg.cn/blog_migrate/c63c470ec6a65d62ad73a4ed6d0be8a1.png)
<!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>
// 方式一: 隐式转换
// 分支语句
var isAdmin = true
var num1 = 123 // true
// 方式二: 显示转换
console.log(Boolean(num1), Boolean(undefined))
// 转换有如下的规则:
// 直观上为空的值, 转成Boolean类型都是false
// 直观上为空的值: 0/""/undefined/null/NaN -> false
// 注意事项
console.log(Boolean("")) // false
console.log(Boolean("0")) // true
</script>
</body>
</html>