JavaScript 函数变量提升

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 之前 只存在 全局作用域 和 函数作用域

作用域

函数字面量式  ==>  这时候函数只是具体的值 不会提升

函数字面量式
函数字面量式

条件判断中函数提升问题  低版本浏览器提升  高本版浏览器不提升

条件判断中的函数提升

目前还是搞不懂 变量和函数 谁提升到谁的前面  但是感觉不重要了,  函数会覆盖同名变量  所以貌似这些就不重要了
如有问题请多多指教

你可能感兴趣的:(JavaScript 函数变量提升)