JS中的变量提升与函数提升

mac2022-06-30  29

JavaScript是函数级作用域,不同于C系语言中的块级作用域。

JavaScript中会存在变量与函数提升问题

变量提升,只会提升变量声明,赋值不会提升,代码如下:    //变量提升 (function() { var a = 'one'; var b = 'two'; var c = 'three' })(); //提升后变成: (function() { var a, b, c;//只提升变量的声明,赋值并不会提升上来。 a = 'one'; b = 'two'; c = 'three'; })(); View Code

  2. 函数提升:

  JavaScript中函数有两种写法:

  函数表达式 var fn=function (){//some code}

  函数声明方式 function fn(){//some code}

  只有函数声明式写法的函数才会被提升,与变量提升不同的是,函数体也会一同被提升,也就是把整个函数都提到前面去。

  代码如下:      //函数提升 (function test1() { fn(); function fn() { console.log("我来自 fn test1"); } })(); test2(); function test4() { fn(); //TypeError: fn is not a function var fn = function () { console.log("我来自 fn test2"); } fn(); } View Code

 

  

 

转载于:https://www.cnblogs.com/Yann001/p/6641645.html

相关资源:JavaScript中变量提升与函数提升经典实例分析
最新回复(0)