码迷,mamicode.com
首页 > Web开发 > 详细

js函数定义语法var fn = function() {} 和 function fn() {}的区别

时间:2020-01-14 12:50:37      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:声明   等价   的区别   方式   pre   script   code   flag   false   

在维护和编写代码的时候,经常会遇到如下两种定义函数的方式:

var functionOne = function() {
    // Some code
};

function functionTwo() {
    // Some code
}

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

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 sayHi
if(flag){
    sayHi=function(){
        alert("Hi");
    }
}else{
    sayHi=function(){
        alert("Yo");
    }
}

js函数定义语法var fn = function() {} 和 function fn() {}的区别

标签:声明   等价   的区别   方式   pre   script   code   flag   false   

原文地址:https://www.cnblogs.com/max1991/p/12191231.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!