JavaScript函数定义语法var fn = function() {} 和 function fn() {}的区别。
本文介绍了JavaScript函数定义语法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");
}
}
这种写法就不会有什么意外,根据flag的不同,sayHi所弹出的内容也会出现变化。
另外这个问题已经问过了,应该尝试自己去搜索,如果找不到再提问
https://segmentfault.com/q/10...
这篇关于JavaScript函数定义语法var fn = function() {} 和 function fn() {}的区别。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文