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

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

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

PHP
温温酱 2019-03-06 19:12:54
var kkk = function(){console.log(3333)}function kkk(){console.log(4444)}kkk()//3333为什么输出是3333而不是4444。
查看完整描述

2 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

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

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

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


查看完整回答
反对 回复 2019-03-16
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

分别运行这两个试一下,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-16
  • 2 回答
  • 0 关注
  • 506 浏览

添加回答

举报

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