变量
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
})();