zoukankan      html  css  js  c++  java
  • 【ECMAScript】立即执行函数

    函数声明: function foo() {},函数声明会被引擎提升
    匿名函数:function () {};
    函数表达式:var fun = function () {};

    要在函数体后面加括号就能立即调用,则这个函数必须是函数表达式,不能是函数声明

    foo();// 因为函数声明提升,不会报错
    function foo() {
        console.log("foo");
    }
    fun();// fun没有赋值,会报错
    var fun = function () {
        console.log("fun");
    }

    立即执行函数

    标准写法

    (function foo() {
        console.log("方式1");
    }());
    (function foo() {
        console.log("方式2");
    })();

    运算符写法。!、+、-、~都将函数声明转换成函数表达式,消除了javascript引擎识别函数表达式和函数声明的歧义,告诉javascript引擎这是一个函数表达式,不是函数声明。

    !function foo() {
        console.log("方式3");
    }();
    +function foo() {
        console.log("方式4");
    }();
    -function foo() {
        console.log("方式5");
    }();
    ~function foo() {
        console.log("方式6");
    }();

    追加防御型分号

    ;(function foo() {
        console.log("方式1");
    }());

    JQuery相关

    (function($){
        console.log("...");
    })(jQuery);

    将实参jQuery传入函数function($){},通过形参$接收。

    $(function(){...});是$(document).ready(function(){...})的简写形式,是在DOM加载完成后执行的回调函数,并且只会执行一次。

    下面两个效果完全一样

    $(function() {
       console.log("...");
    });
    $( document ).ready(function() {
       console.log("...");
    });
  • 相关阅读:
    HDFS客户端的权限错误:Permission denied
    使用JAVA API获取hadoop集群的FileSystem
    Hessian 接口使用示例总结(转载)
    Linux NFS服务器的安装与配置
    ContextLoaderListener可以不写嘛?
    SpringMvc @ResponseBody字符串中文乱码原因及解决方案
    Spring @RequestAttribute
    Spring @Pathvariable
    Spring @Valid
    Spring @ModelAttribute
  • 原文地址:https://www.cnblogs.com/yangchongxing/p/15438970.html
Copyright © 2011-2022 走看看