js函数定义语法var fn = function() {} 和 function fn() {}的区别
Posted max1991
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js函数定义语法var fn = function() {} 和 function fn() {}的区别相关的知识,希望对你有一定的参考价值。
在维护和编写代码的时候,经常会遇到如下两种定义函数的方式:
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() {}的区别的主要内容,如果未能解决你的问题,请参考以下文章