Skip to content

变量

https://www.yuque.com/qinsjs/jsinfo/yv7zudlhgb3884hw

变量 是 数据的“命名存储”

变量 是 杯子
name 是 杯子上面的 标签
value 是 杯子里面装的什么(可乐 或 果汁)。

let

js
let user = "John",
  age = 25,
  message = "Hello";

let 是可变的,当值改变的时候,之前的数据就被删除了。

const

常数变量,即 不变的变量。

对于基本类型,是不可变的。
对于引用类型,是指针不可变。

hard-coded

硬编码(hard-coded),常量应该使用大写命名

js
const PI = 3.141592653589793;

var

https://www.yuque.com/qinsjs/jsinfo/iatmge

js
num = 5; // 非scrict下,如果变量 "num" 不存在,就会被创建

作用域

只有 全局作用域 和 函数作用域

js
if (true) {
  var test = true;
}

test; // true,依旧可以访问!

没有块级作用域,对于循环影响特别大。

重新声明

js
var user = "Pete";

var user = "John"; // Pete 被覆盖了,并且 不会触发错误!!!

“提升”(英文为 “hoisting” 或 “raising”)

js
function sayHi() {
  phrase = "Hello";

  alert(phrase);

  var phrase;
}

声明会提升,但是赋值不会!

js
function sayHi() {
  alert(phrase); // undefined

  var phrase = "Hello";
}

IIFE / immediately-invoked function expressions

一种模仿块级作用域的方法,用于对抗 var 。

js
(function () {
  var message = "Hello";

  alert(message); // Hello
})();