/*
* (let const)暂时性死区
* 只要当前作用域中声明过某个变量,那么声明使用该变量会报错
*
* 建议,同个作用域所有的定义全部写在最前面
*/let x =10;functionfn(){
console.log(x);let x =20;}fn();//报错
const
const a =10;
a =20;//报错
const a ={
name :"mint"};
a.age =18;
console.log(a);//不会报错
块级作用域
/*{}*//*function a(){}
let b = {};
if(true){}
for(;;){}
let c = ()=>{}
`aaa${"ddd"}bbb`*//*单独出现的 {} 相当于一个独立的作用域*/let a =10;{let b =20;
console.log(a);}
console.log(b);
顶层对象
/*
* 在全局作用域下用var定义的变量等价于window对象的属性
* */var x =10;
console.log(x);//10
console.log(window.x);//10/*全局作用域的顶层对象不是window*/let x =10;
console.log(x);// 10
console.log(window.x);// undefined
不直接定义赋值
functionfn(){
b =20;}fn();
console.log(b);//20 直接赋值不定义,将会被挂载到全局
console.log(window.b);//20
console.log(b === window.b);//truelet b =0;functionfn(){
b =20;}fn();
console.log(b);// 20
console.log(ww.b);//undefined
//练习var a =10;functionfn(){var a = b =20;}fn();
console.log(a);//10
console.log(b);//20
解构赋值
let a =10;let b =20;let c ={name:"mint",age:20};let[a,b]=[10,20];//等价于let a =10,b =20;
console.log(a);//20
console.log(b);//30let[a,b,c]=[20,30];
console.log(a, b, c);//20 30 undefinedlet[a,b]=[3,4,5];
console.log(a, b);//3 4let[a,b]=[1,[3,5]];
console.log(a);// 1
console.log(b);// [3,5]let[a,b]=[1,[3,5]][1];
console.log(a);// 3
console.log(b);// 5//等价于let x =[1,[3,5]];let[a,b]= x[1];
console.log(a);// 3
console.log(b);// 5let[a,b,[c,d]]=[1,2,[3,4]];
console.log(a, b, c, d);// 1 2 3 4
第二十章.ES6语法知识一letconsole.log(a); //报错let a = 10;/** (let const)暂时性死区* 只要当前作用域中声明过某个变量,那么声明使用该变量会报错** 建议,同个作用域所有的定义全部写在最前面*/let x = 10;function fn() { console.log(x); let x = 20;}fn(); //报错constconst a = 10;a = 20; //报错const a =