一 可以使用三种关键字 var let const 存贮数据
注:当程序执行之前,浏览器会预解析,
在ES6语法没出来之前是没有块级作用域的.
1.未经声明的变量叫做常量 name = "You" 属于window值
2.变量命名需要遵循以下几个观点:
变量名称必须仅包含字母,数字,符号 $ 和 _,
首字符必须非数字,不能用系统的关键字,保留字当变量名.
3.var在方法中定义是属于局部变量,在全局域声明是全局变量,且var声明会产生变量提升.
4.let 声明变量,且let声明只在当前代码块有效(例一),会产生块级作用域(例一),不会出现变量提升 ,如果在未声明变量前就使用变量会出现暂时性死区(例二).
5.const声明一个只读的常量。一旦声明,常量的值就不能改变。只针对基本数据类型,但是复杂数据类型是可以改变的.
6.Object.freeze 冻结属性 (例四) 不允许重复赋值(例三).
例1:{
let foo = 10;
var bar = 10;
}
console.log(foo) // ReferenceError: a is not defined.
console.log(bar) // 10
let num = 5
if(true) {
let num = 10
console.log(num) //10
}
例2:funciton foo(){
console.log(a) // ReferenceError
let a = 10
}
例3: let a = 10; var a = 10; //报错 .
例4: let foo = 10
Object.freeze(foo) //谁也别想碰我