作用域\
全局作用域:\
浏览器环境中有一个顶层对象window,其属性和var全局变量一样\
如果是window对象的内置属性,输出默认值,否则是undefined\
var如果设置了window对象的内置属性作为变量,则会直接覆盖\
undefined,非内置\
var的全局变量即window的属性\
用var内置属性值被覆盖\
块级作用域:\
循环体内和条件体内就是块级作用域,块级作用域是{}\
如果不在块级作用域中使用let,会造成全局变量污染的问题\
{{{}}}块级作用域支持多层嵌套,每一层均为封闭的,只作用于当前作用域内\
ES6之前,采用自我立即执行匿名函数的方式来防止变量污染\
()自我执行\
ES6之前函数必须在顶层声明,违反并不报错,而ES6开始支持\
块级作用域内的函数声明,可以在全局访问\
使用函数表达式的方法去构建函数\
数组和对象的解构\
数组结构:\
数组解构赋值两种写法:1.分行解构 2.单行解构\
单行解构,均可输出name值\
数组层次也需要匹配\
用,作为占位符不赋值\
在变量解构时,数组的元素可以设置一个默认值\
当sex没有赋值时,采用默认值\
还有...var语法,将没有赋值的内容都赋值给这个变量\
通过数组的方式输出\
对象解构:\
定义对象字面量,解构赋值\
解构对象至变量,直接输出变量\
对象变量解构可以设置一个默认值,没有默认值时输出默认值\
没有默认值时是undefined\
如果不想要对象属性名作为解构变量,可以通过键值对的方式更改变量名\
在对象里还嵌套了对象,解构时也是相同方法解构\
对象解构也支持单行简写\