关于es6 let var const 以及Symbol的总结
//es6新增块级作用域。声明变量用关键字let const ,
// es5中只有函数作用域和全局作用域,声明变量用关键字var
// let 和const 声明的变量不存在变量提升,var声明的变量存在变量提升。
//let 和const声明的变量只在块级作用域有效,既它所在当前的代码区块内。;let不能重复声明同一变量。
//let 声明的变量存在暂时性死区,即未声明就去使用会报出 引用(ReferenceError)错误。
//var 声明的全局变量 自动跨载到window成为其的属性。
console.log(x);//ReferenceError)错误
let x=2;
var tmp = new Date();
function f() {
console.log(tmp);
if (false) {
var tmp = 'hello world';
}
}
f(); //undefined //变量tmp提升 内层tmp变量覆盖外层tmp变量.
var x=2;
var x=3;
console.log(x);//3
let y=4;
let y=5
console.log(y);//引用(ReferenceError)错误。
//es5中 有6种数据类型 undefined、null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)
//es6 引入第七种Symbol数据类型,其声明的值是独一无二的;
let x=Symbol()
console.log(typeof x);//Symbol
//es5中对象的属性名只能是字符串,现在可以是Symbol,如果属性名重复,后面的属性会覆盖前面的属性。可以使用Symbol解决
let y={name:"yz",[x]:"yx"}
let z={name:"yx",name:"yz"}
console.log(z);//{name:"yz"}
console.log(y);//{name:"yz",[Symbol()]:"yx"}
//Symbol 接收一个参数便于区分
let m=Symbol('F')
let y=Symbol('g')
console.log( m);
console.log( y);
//使用同一个Symbol可以使用Symbol的for方法
let s1 = Symbol.for('foo');
let s2 = Symbol.for('foo');
console.log(s1 === s2 );// true
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步