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("...");
    });
  • 相关阅读:
    Pycharm中导入Python包的方法
    关于SOA架构设计的案例分析
    浅谈12306核心模型设计思路和架构设计
    美图数据统计分析平台架构演进
    有赞搜索系统的架构演进
    美团云的网络架构演进之路
    数据蜂巢架构演进之路
    1号店电商峰值与流式计算
    京东B2B业务架构演变
    饿了么:业务井喷时订单系统架构的演进
  • 原文地址:https://www.cnblogs.com/yangchongxing/p/15438970.html
Copyright © 2011-2022 走看看