深入理解js的变量提升和函数提升

来源:互联网 发布:进存销软件哪些免费 编辑:程序博客网 时间:2024/06/05 14:09

一、变量提升

 在ES6中提出了块级作用域,用var声明的变量,起作用域应为对整个块都起作用,所以会跑偏;而且使用var声明的变量会出现“变量提升”现象。

那么什么是变量提升呢?用以下代码直观感受一下:

其执行顺序应为:




二、函数提升

  js中创建函数有两种方式:函数声明式和函数字面量式。只有函数声明才存在函数提升!如:

1
2
3
4
console.log(f1); // function f1() {}   
console.log(f2); // undefined  
function f1() {}
var f2 = function() {}

  只所以会有以上的打印结果,是由于js中的函数提升导致代码实际上是按照以下来执行的:

1
2
3
function f1() {} // 函数提升,整个代码块提升到文件的最开始<br>     console.log(f1);   
console.log(f2);   
var f2 = function() {}

  

实例:

          function Text(n){
                console.log(n);
                var n=2;
                function n(){
                }
                console.log(n)
            }
            Text(1)

执行顺序应为:

                var n
                function n(){
                }
                console.log(n);
                n=2;
                console.log(n)


原创粉丝点击