1. 定义
有 var 关键字
或者 function 函数名() {}
var num // 定义变量
function fn() {} // 定义变量
2.使用
就是当你需要拿到一个变量的值去使用的时候
console.log(num) // 我要使用 num 的值去打印出来
1 + num // 我要使用 num 的值去和 1 进行运算
var abc = num // 我要使用 num 的值赋值给 abc
3.赋值
给一个变量进行赋值的操作
num = 100 // 要把 100 这个值赋给 num 这个变量
num = function () {} // 要把 函数 这个值赋给 num 这个变量
**规则内容**
当你在定义一个变量的时候
你把这个变量定义在哪个作用域里面
就只有这个作用域及其后代作用域可以使用
当前作用域的所有祖先级作用域不能使用
2.2 规则二
当你需要使用一个变量的时候
首先, 在自己作用域内部查找, 如果有, 就直接使用, 停止查找
如果没有, 就去上一级作用域查找, 有就使用, 停止查找
如果还没有, 就再去上一级作用域查找, 有就使用, 停止查找
直到全局作用域都没有, 那么就报错 "变量 is not defined"
<script>var a = b =10// 这里代码执行完, 全局两个变量, 一个 a 一个 b
console.log(a)
console.log(b)/*
代码解析
var a = b = 10
实际上是三个部分
1. var a
2. a = b
3. b = 10
等于号(赋值) 的规则是从右往左
1. 预解析
var a
2. 代码执行的时候
b = 10 // 标准的变量赋值操作, 根据变量赋值规则, 会把 b 定义成全局变量再赋值
a = b
console.log(a)
console.log(b)
*/</script>
<script>var a = b
b =20
a =10
console.log(a)
console.log(b)/*
代码执行过程
1. 预解析
var a
在浏览器里面声明了一个 a 变量可以使用
2. 代码执行
b = 20 // 对于变量 b 来说是变量的赋值
a = b // 对于变量 b 来说, 是变量的使用, 报错了, 后面就没有代码了
</script>