1. 同名变量只会被声明一次
2. 函数是js 的一等公民, 具有优先编译权
3. 函数被声明到变量的前面, 会被优先编译并覆盖同名变量的声明
4. es6 之前 js 只存在两种作用域, 全局作用域 和 函数作用域
变量函数提升 是 在解析时候把 变量声明 和 函数 提升到对应作用域的顶部
下面我们通过例子一一看下
关于if/for 代码块中的 函数还要看一下这个
https://www.lagou.com/lgeduarticle/119657.html 总结 代码块内 遇到 function 会把上次的操作映射的全局 下一个操作不是遇到函数 就是私有
简单借鉴一下吧 自己都学废了
例子:
说明: es6 之前没有块级作用域 if代码块 中的变量 会被提升到全局变量 "条件判断中的函数要根据浏览器版本来决定是否提升到全局作用域(请看最后一个例子)"
先变量提升 var a; ==> a 是 undefined 打印出"undefined" ==> a 赋值 打印出 "莫拉"
变量提升函数会被优先编译 覆盖同名函数
函数提升说明: es6 之前 只存在 全局作用域 和 函数作用域
作用域函数字面量式 ==> 这时候函数只是具体的值 不会提升
函数字面量式 函数字面量式条件判断中函数提升问题 低版本浏览器提升 高本版浏览器不提升
条件判断中的函数提升目前还是搞不懂 变量和函数 谁提升到谁的前面 但是感觉不重要了, 函数会覆盖同名变量 所以貌似这些就不重要了
如有问题请多多指教
网友评论