var 函数名 = function(){} 控制台提示 is not a function

boom();

function boom(){

    alert("good");

}

以上正常alert


boom();

var boom = function(){

    alert("good");

}

这上面的代码无法alert出内容,求大牛告知。


以下为html结构


<!DOCTYPE html>

<html>

    <head>

        <meta charset="utf-8" />

        <title>abc</title>    

    </head>

    <body>

        <p>TEST</p>

<script src="js/test.js"></script>

    </body>

</html>


杨__羊羊
浏览 726回答 1
1回答

一只名叫tom的猫

先说结论:两种函数定义的方式不一样,导致函数提前的方式不同1.第一种方式,我们称为函数声明,在这种情况下,整个函数都被提升了,包括函数体。即boom();function boom(){&nbsp; &nbsp; alert("good");}等价于function boom(){&nbsp; &nbsp; alert("good");}boom()2.第二种方式,我们称为函数表达式,在这种情况下定义的函数,仅做函数名称的提升,函数体会留在原来的位置,即boom();var boom = function(){&nbsp; &nbsp; alert("good");}等价于var boom = undefined;boom();boom = funciton() {&nbsp; &nbsp; alert("good");}调用boom()时,boom为undefined,因此会报错,Uncaught TypeError: boom is not a function
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript