wild84
wild84
2017-07-12 01:37
采纳率: 91.6%
浏览 892

jquery 编写代码习惯看不懂

var test=function(){}是不是等价于function test(){}?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • showbo
    已采纳

    是的,只是一个是变量式,一个直接申明为函数
    但是需要注意的是var test要赋值后才能调用,要不会报错,而function test可以再此js块前面调用

    ==》javascript运行机制浅析

     //test()//在这里调用报错,因为test为undefined,未赋值
    var test=function(){}
    test();//要在这里调用
    
     test();//正常执行
    function test(){}
    
    点赞 评论
  • qq_29594393
    当作看不见 2017-07-12 01:40

    正解,
    function test(){} ,有函数声明提升,可以先使用再声明
    var test =function(){},必须先声明,再引用,其他表现一致.
    这个不是编码习惯,而是在js里面,函数也是一个对象,是第一级公民,也就是说js是支持函数式编程的语言.

    点赞 评论
  • m0_38082783
    Rattenking 2017-07-12 02:06

    我的理解是:
    function test(){}这种方式声明的函数比变量(var test=function(){})声明的优先级高。
    如果不是特定的情况下,这两种声明,效果其实都一样,这一篇解释的比较详细:
    http://www.jb51.net/article/90113.htm

    点赞 评论
  • stopllL
    white_g 2017-07-12 02:26

    高程有说,创建函数的两种方法,一种是函数定义,一种是函数申明。
    他们两个效果几乎相同,唯一的差别就是变量提升的问题。

    var fun_1 = function(){}   // 这里其实先定义一个变量fun_1  然后赋值一个匿名函数。
    function fun_2(){}  // 这里是定义一个函数。
    

    fun_2的提升是整个函数提升,即可以先调用后定义;
    至于fun_1必须先申明后调用。其实fun_1这个函数也不是不提示,只是变量名提示,而函数体不提示。可以看看javascript中的变量提升的规则,其实fun_1的这种方式就是一种赋值操作

    点赞 评论
  • Smile_Luckly
    BillowX 2017-07-12 03:54

    你把他当作java的面向对象看就好理解了

    点赞 评论

相关推荐