作用域

71 阅读2分钟

作用域
全局作用域:
浏览器环境中有一个顶层对象window,其属性和var全局变量一样
如果是window对象的内置属性,输出默认值,否则是undefined
var如果设置了window对象的内置属性作为变量,则会直接覆盖
undefined,非内置
var的全局变量即window的属性
用var内置属性值被覆盖\

块级作用域:
循环体内和条件体内就是块级作用域,块级作用域是{}
如果不在块级作用域中使用let,会造成全局变量污染的问题
{{{}}}块级作用域支持多层嵌套,每一层均为封闭的,只作用于当前作用域内
ES6之前,采用自我立即执行匿名函数的方式来防止变量污染
()自我执行
ES6之前函数必须在顶层声明,违反并不报错,而ES6开始支持
块级作用域内的函数声明,可以在全局访问
使用函数表达式的方法去构建函数\

数组和对象的解构
数组结构:
数组解构赋值两种写法:1.分行解构 2.单行解构
单行解构,均可输出name值
数组层次也需要匹配
用,作为占位符不赋值
在变量解构时,数组的元素可以设置一个默认值
当sex没有赋值时,采用默认值
还有...var语法,将没有赋值的内容都赋值给这个变量
通过数组的方式输出\

对象解构:
定义对象字面量,解构赋值
解构对象至变量,直接输出变量
对象变量解构可以设置一个默认值,没有默认值时输出默认值
没有默认值时是undefined
如果不想要对象属性名作为解构变量,可以通过键值对的方式更改变量名
在对象里还嵌套了对象,解构时也是相同方法解构
对象解构也支持单行简写