最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 2019.11.10-Week-JavaScript函数定义的几种方式

    正文概述 掘金(进击的大羊)   2021-01-14   444

    1. JavaScript定义函数的几种方法

    常见的四种定义函数的方法如下:

    1. 使用直接量方式声明命名函数

    这方式是最常用的方式是function fun(){};

    1. 函数表达式

    声明为匿名函数然后赋值给一变量,很常见的方式:var fun=function(){};

    在这种方式下,function(){}是一个匿名函数,它没有函数名。但是,这个匿名函数赋值给了变量fun,所以,通过变量fun就可以调用该函数

    1. 使用function关键字声明命名函数

    第三种是将func赋给变量fun,var fun=function fun(){};

    1. 使用Function对象构造方法创建函数

    声明fun为一个对象var fun=new Function();

    2.几种方法的区别

    1. 其实第一种function定义和第三种使用function关键字声明命名函数定义方式差不多,但是仅以声明方式定义的方法,会被声明提前,而第三种方式不会。

    如下面这种方式是正确的:

    func(1);
    function func(a)
    {
      alert(a);
    }
    

    Javascript引擎在解析javascript代码时会‘函数声明提升',当前执行环境(作用域)上的函数声明,而函数表达式必须等到Javascript引擎执行到它所在行时,才会从上而下一行一行地解析函数表达式。 但是第三种定义方式的在声明前调用是错误的,会提示func未定义:

    func(1);
    var func = function(a)
    {
      alert(a);
    }
    
    1. 使用Function对象构造方法创建函数,可改变且运行效率低

    以声明方式和直接量方式定义的方法,方法体固定,无法在运行时动态执行。但是以创建对象方式定义的方法,方法体是字符串,可以在运行时动态创建,修改,并执行字符串格式的方法体。

    以创建对象方式定义的方法,因为方法体是字符串,需要再次解析。所以执行效率较另外两种方式较低。

    1. 定义匿名函数

    匿名函数就是定义时未直接指定名称的函数:

    var fun = function(args,arg2){
        var sum = arg1+arg2;
    }
    // 也可以直接定义匿名函数
    (function(){
        ...
    })();
    

    函数表达式后面可以加括号立即调用该函数,函数声明不可以,只能以fnName()形式调用。

    匿名函数只有在被调用时才被初始化,最后面的一对小括号里面可以传参,这种自调用方式不需要调用,会自动执行。

    匿名函数有一个好处就是,匿名函数内部定义的变量时私有变量,作用域只在当前函数内,不会被外部引入的js同名变量污染。

    匿名函数比非匿名函数更节省内存空间: 因为非匿名函数在定义时就已经创建函数对象和作用域链对象,所以,即使未调用,也占用内存空间。

    匿名函数仅在调用时才会临时创建函数对象和作用域链对象,调用完会立刻释放。

    3.总结

    在开发中多使用直接量方式function fun(){},但是在现在ESlint检查严格模式下,这种定义方式不会被声明提前,如果定义前使用会报警告错误。

    匿名函数属于函数表达式,匿名函数有很多作用,赋予一个变量则创建函数,赋予一个事件则成为事件处理程序或创建闭包等等。

    java-web工程中常见jQuery使用时: (function(arg){}(jQuery))其实就相当于定义了一个参数为arg的匿名函数,同时jQuery作为参数来调用这个匿名函数,在所有DOM元素加载之前执行的jQuery代码。

    也就是(function(arg){}(jQuery))用来定义一些需要预先定义好的函数;而(function(){})则是用来在DOM加载完成之后执行那些预行定义好的函数。


    起源地下载网 » 2019.11.10-Week-JavaScript函数定义的几种方式

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元