// 赋值运算符
// = += -= *= /= %=
// 将右侧表达式的执行结果,按照运算符,与左侧变量存储的数据进行运算
// = 等号赋值运算符
// 将右侧表达式的执行结果,赋值给左侧的变量存储
// += 加等赋值运算符
// 在变量存储的原始数值的基础上,加上右侧表达式执行的结果,再将最终的运算结果,赋值给变量本身存储
// -= 减等赋值运算符
// 在变量存储的原始数值的基础上,减去右侧表达式执行的结果,再将最终的运算结果,赋值给变量本身存储
// *= 乘等赋值运算符
// 在变量存储的原始数值的基础上,乘以右侧表达式执行的结果,再将最终的运算结果,赋值给变量本身存储
// /= 除等赋值运算符
// 在变量存储的原始数值的基础上,除以右侧表达式执行的结果,再将最终的运算结果,赋值给变量本身存储
// %= 模等赋值运算符
// 在变量存储的原始数值的基础上,对右侧的运算结果,执行求余数运算
// += 赋值运算符
var int = 100;
// 在int存储原始数值100的基础上,加上右侧表达式的结果200,将最终的结果300赋值给变量int 存储
int += 200;
// 展开语法 int = int + 200;
console.log(int);
var int2 = 100;
// 先计算右侧的执行结果是 17
// 在原始数值的基础上,加上右侧的执行结果 17 ,最终结果117赋值给int2存储
// int2 = int2 + ( 2+3*5 )
int2 += 2+3*5; // 结果是 117
console.log(int2);
// -= 赋值运算符
var int3 = 100;
// 先计算右侧的执行结果是 200
// 在左侧原始数值100的基础上,减去右侧执行结果200,也就是100-200,结果是-100
// 展开 int3 = int3 - (100+100)
int3 -= 100+100;
console.log(int3);
// *= 赋值运算符
var int4 = 100;
// 先计算右侧的执行结果是5
// 左侧原始数值100,乘以右侧执行结果5 100*5 结果是 500
// 展开 int4 = int4 * (2+3)
int4 *= 2+3;
console.log(int4);
// /= 赋值运算符
var int5 = 100;
// 先计算右侧的执行结果是5
// 左侧原始数值100,除以右侧执行结果5 100/5 结果是 20
// 展开 int5 = int5 / (2+3)
int5 /= 2+3;
console.log(int5);
// %= 赋值运算符
var int6 = 100;
// 先计算右侧的执行结果,是5
// 变量存储的原始数值,对右侧的运算结果,执行求余数运算
// 100 % (2+3) --- 100 % 5 不是 100%2+3
// 结果是0
// 展开 int6 = int6 % (2+3)
int6 %= 2+3;
// 总结:
// 1,一定是将右侧的所有所有所有内容都作为一个整体来考虑
// 2,在左侧变量的基础上,与右侧的整体结果进行运算
// 变量 运算 ( 右侧的所有内容 )
// 3,左侧变量一定要有数据数值,不能是没有赋值的变量,或者不存在的变量
// 如果是没有赋值的变量,或者不存在的变量,执行会报错
// 不存在的变量a,执行 += 操作
// 会直接报错
// a += 3;
// console.log(a);
// 只定义变量,但是没有给变量赋值
// 此时 变量中存储的的数据是 undefined
// 执行算术运算,结果是 NaN
var a;
a += 3;
console.log(a);