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

不同方式创建同名函数会怎样?

不同方式创建同名函数会怎样?

HUX布斯 2019-03-21 13:41:51
var kkk = function(){console.log(3333)}function kkk(){console.log(4444)}kkk()//3333为什么输出是3333而不是4444。
查看完整描述

2 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

函数是一等公民
函数提升优于变量提升
上面的代码实则如下:

function kkk(){console.log(4444)}var kkk;
kkk = function(){console.log(3333)}
kkk()

拙见,若有不对之处望指正


查看完整回答
反对 回复 2019-03-21
?
DIEA

TA贡献1820条经验 获得超2个赞

分别运行这两个试一下,var定义全局的kkk()被修改

        function kkk(){console.log(4444)}
        kkk();//4444
        window.kkk();//4444
        var kkk = function(){console.log(3333)};
        kkk();//3333
        window.kkk();//3333
var kkk = function(){console.log(3333)};
        kkk();//3333
        window.kkk();//3333
        function kkk(){console.log(4444)}
        kkk();//3333
        window.kkk();//3333

这样写,表明let的好处。报错,kkk已经被定义

function kkk(){console.log(4444)}
        kkk();//4444
        window.kkk();//4444
        let kkk = function(){console.log(3333)};//报错,kkk已经被定义
        kkk();        window.kkk();


查看完整回答
反对 回复 2019-03-21
  • 2 回答
  • 0 关注
  • 438 浏览
慕课专栏
更多

添加回答

举报

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