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

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

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

函数表达式:

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

解析器在向执行环境加载数据时,对这两种是有区别的:

解析器会率先读取函数声明,以确保在执行任何代码之前可以访问,

而函数表达式,则必须等到解析器执行到他所在的代码才会被真正执行。

另外除了这一点区别,函数声明与函数表达式的语法其实是等价的。

 

 

注:

实际开发中,建议使用第二种方式

在实际开发中,存在各种各样的js文件,各种js文件互相引入,当业务逻辑相似,函数功能相似的时候,就有可能使函数名重复,如果使用第一种方式,这个时候就会覆盖先前代码的函数声明。

由于JavaScript是单线程的执行方式,使用第二种方式,可以使原来的js函数得以执行,同时又使新引入的函数执行成功。

var fun = function(){
    console.log(1);
}

fun();//1

/* 以下是引入文件 文件中可能出现相同的函数名
<script src="/js/file.js">
 */
var fun = function(){
 console.log(2);
}
fun();//2

 

如果是使用第一种方式,则两次执行都会是2.

 

当然了,使用第一种方式也没有太大问题,如果出现重名,开发的时候是会注意到,功能出现问题,测试的时候也能测出来。但显然第二种方式比较符合开发规范。

 

 

 

原文出处:

https://segmentfault.com/q/1010000006776513/a-1020000006776587

posted @ 2019-12-27 15:52  ryelqy  阅读(559)  评论(0编辑  收藏  举报