变量
变量是数据的“命名存储”,用来储存信息。
变量声明
变量声明有以下方式:
var
var message;
//可以将变量定义和赋值合并成一行
var message = '1111'
// 已声明未赋值的值默认为undefined 并且可以通过变量名访问
var lll;
var mmm = '1111';
console.log(typeof lll) // undefined
console.log(mmm)// '1111'
//可以在一行中声明多个变量,也可以在一行中声明多个变量并赋值(const除外)
var lll,eee,ttt;
var lll = '1111',eee='222,ttt='333';
//除了const外 可以多次赋值
var a;
a= 1;
a=3;
console.log(a) // 3
// 可以将一个变量拷贝到另一个变量
let a = 3;
let b = 4;
b = a ;
console.log(b) //3
let
let message;
- 不存在变量提升
console.log(l)
const l = 4
//Cannot access 'l' before initialization
- 存在暂时性死区
let l = 4
{
console.log(l)
let l = 6
}
// Cannot access 'l' before initialization
- 不允许重复声明
var l = 5
let l = 8
//Identifier 'l' has already been declared
- 拥有块级作用域
{
let l = 9
}
console.log(l)
//l is not defined
const (用于声明常量)
const message;
-
不存在变量提升
console.log(m) const m = 4 //Cannot access 'm' before initialization -
不允许重复声明
var m = 'Hello!' let a = 25 const m = 'Goodbye!' const a = 30 //Identifier 'm' has already been declared -
拥有块级作用域
{ const m = 9 } console.log(m) //m is not defined -
声明后必须赋值,且赋值后不能修改(对于简单数据类型)
const PI; //Missing initializer in const declaration //对于简单数据类型 const s = 9 s = 8 //Assignment to constant variable. //对于复杂数据类型 const obj = {} obj.a = 3 // {a:3}const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。 对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指向实际数据的指针,
const只能保证这个指针是固定的(即总是指向另一个固定的地址),至于它指向的数据结构是不是可变的,就完全不能控制了。
变量命名
变量命名有以下限制:
-
变量名称必须仅包含字母,数字,符号
$和_。 -
首字符必须非数字。
-
保留字不能使用
// 有效的 let userName; let test123; //无效的 let 11mm let class -
命名区分大小写
-
允许非英文字母,但不推荐
let p let P;// 区分大小写 let 我;//不推荐