var test=function(){}是不是等价于function test(){}?
是的,只是一个是变量式,一个直接申明为函数
但是需要注意的是var test要赋值后才能调用,要不会报错,而function test可以再此js块前面调用
//test()//在这里调用报错,因为test为undefined,未赋值
var test=function(){}
test();//要在这里调用
test();//正常执行
function test(){}
正解,
function test(){} ,有函数声明提升,可以先使用再声明
var test =function(){},必须先声明,再引用,其他表现一致.
这个不是编码习惯,而是在js里面,函数也是一个对象,是第一级公民,也就是说js是支持函数式编程的语言.
我的理解是:
function test(){}这种方式声明的函数比变量(var test=function(){})声明的优先级高。
如果不是特定的情况下,这两种声明,效果其实都一样,这一篇解释的比较详细:
http://www.jb51.net/article/90113.htm
高程有说,创建函数的两种方法,一种是函数定义,一种是函数申明。
他们两个效果几乎相同,唯一的差别就是变量提升的问题。
var fun_1 = function(){} // 这里其实先定义一个变量fun_1 然后赋值一个匿名函数。
function fun_2(){} // 这里是定义一个函数。
fun_2的提升是整个函数提升,即可以先调用后定义;
至于fun_1必须先申明后调用。其实fun_1这个函数也不是不提示,只是变量名提示,而函数体不提示。可以看看javascript中的变量提升的规则,其实fun_1的这种方式就是一种赋值操作
你把他当作java的面向对象看就好理解了