临时变量

临时变量可以临时存储一些数据,当前脚本结束后将被清空(即使是同一动作的不同脚本,临时变量也是不互通的)。
变量可以像普通的表达式一样,参与任何运算。

声明一个变量

var a = 1; //声明一个名称为『a』的变量,值为1
声明一个变量的格式为 var 变量名 = XXX ,变量名可以由中英文和数字混合,但不可以出现标点符号。
相同名字的变量只能声明一次。

改变这个变量的值

var a = 1;
a = a + 2; //让『a』变量加2
//现在,a的值变为3
通过 变量名 = xxx 对该变量进行赋值。

让属性等于这个变量的值

var a = 1;
a = a + 2;
属性.幸运值 = a;
//让属性『幸运值』的值等于临时变量『a』的值,也就是3

综合运用变量

var a = 属性.金钱; //声明一个叫『a』的变量,让它等于属性『金钱』的值
a = a + 属性.工资; //让『a』加上属性『工资』的值
属性.金钱 = a; //让属性『金钱』的值变为变量『a』当前的值

改变变量多种写法

改变变量的值,有多种写法。
//下面3行,都代表让a增加1
a = a + 1;
a++;
a += 1;

//下面2行,都代表让b减少2
b = b - 2;
b -= 2;

按值传递

如果将变量 A 赋值给变量 B,改变变量 A,不会导致变量 B 发生改变。
var a = 1;
var b = a; //声明一个叫『b』的变量,让它等于变量『a』的值,也就是1
a = a + 1; //让变量『a』增加1,变成2
//现在,a的值为2,b的值为1。改变a的值,不会让b发生变化,这就是“按值传递”

var 和 let、const 的区别

你还可以通过 let、const 声明变量,var 和 let 几乎一样,除了 let 的作用域与 var 不同。
(如果你不关心 let 的作用域,可以跳过这一节,如果你看到别的成员使用 let,把它们当成 var 即可)
var 声明的变量,可以在所有地方被访问。
let 声明的变量,只能在它所在的花括号里面被访问,不能在花括号外被访问,例如:
if (属性.签到次数 > 10) {
  let 奖励 = 10;
}
//下面这个式子含有变量『奖励』,但该变量只在上面if的花括号里生效,花括号外无法访问,因此将会报错
属性.金钱 = 属性.金钱 + 奖励;
在外层声明的变量,可以在花括号里被访问到
let 奖励 = 10;
if (属性.签到次数 > 10) {
  奖励 = 20;
}
//下面这行的代码是正确的,如果签到次数大于10,将会奖励20金钱,否则奖励10金钱
属性.金钱 = 属性.金钱 + 奖励;
然而,如果在花括号里重复声明了变量,将会覆盖外层的变量,内部变量发生的变化不会影响到外层
let 奖励 = 10;
if (属性.签到次数 > 10) {
  let 奖励 = 20;
}
//虽然下面这行代码不会报错,但第一行『奖励』临时变量不会变为20,依然为10
//因为上方第三行重复声明了『奖励』变量,新的变量仅在花括号里面生效,改变它不会影响到外层
属性.金钱 = 属性.金钱 + 奖励; //依然为10
上面这些问题,只有使用 let 会存在。如果使用 var,则不需要担心这些问题。
const 声明的是常量,表明某一个值不会发生变化,和 let 的作用域相同。通过 const 可以用于避免误修改了不应该改变的值。
const 奖励 = 10
奖励 = 20 // 会出现报错