为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

杨__羊羊 2018-12-21 23:14:29
boom();function boom(){    alert("good");}以上正常alertboom();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>
查看完整描述

1 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

先说结论:


两种函数定义的方式不一样,导致函数提前的方式不同

1.第一种方式,我们称为函数声明,在这种情况下,整个函数都被提升了,包括函数体。即


boom();

function boom(){

    alert("good");

}

等价于


function boom(){

    alert("good");

}

boom()

2.第二种方式,我们称为函数表达式,在这种情况下定义的函数,仅做函数名称的提升,函数体会留在原来的位置,即


boom();

var boom = function(){

    alert("good");

}

等价于


var boom = undefined;

boom();

boom = funciton() {

    alert("good");

}

调用boom()时,boom为undefined,因此会报错,


Uncaught TypeError: boom is not a function


查看完整回答
反对 回复 2019-01-27
  • 1 回答
  • 0 关注
  • 725 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信