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

js中创建一个function的2种方法哪个好?

js中创建一个function的2种方法哪个好?

Qyouu 2018-08-16 14:14:19
如下图,看到好多人写function的时候,都用var aa=function(){}的形式,这是为什么呢?是性能可以提升一些吗?求指教~
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

这两种是有区别的,一种是函数声明,一种是函数表达式。
函数声明:

funName()//正常执行function funName(){    //code}

函数表达式:

funName()//报错var funName=function(){    //code}

解析器在向执行环境加载数据时,对这两种是有区别的,解析器会率先读取函数声明,以确保在执行任何代码之前可以访问,而函数表达式,则必须等到解析器执行到他所在的代码才会被真正执行。
另外除了这一点区别,函数声明与函数表达式的语法其实是等价的。
至于使用哪种就看题主自身的情况来决定,比如:

if(flag){    function sayHi(){
        alert("Hi");
    }
}else{    function sayHi(){
        alert("Yo");
    }
}

上面代码希望,在flag为true的时候,调用sayHi时弹出Hi,而false时则弹出Yo,但实际上这在javascript中属于无效代码,大多浏览器会使用第二个函数声明,忽略flag。
可以使用以下写法:

var sayHiif(flag){
    sayHi=function(){
        alert("Hi");
    }
}else{
    sayHi=function(){
        alert("Yo");
    }
}

这种写法就不会有什么意外,根据flag的不同,sayHi所弹出的内容也会出现变化。


查看完整回答
反对 回复 2018-10-06
  • 1 回答
  • 0 关注
  • 806 浏览
慕课专栏
更多

添加回答

举报

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