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

    IIFE: immediately invoked function expression
    最大的特点是:立即执行,执行完之后立即销毁
    1. 语法
    (function() {} ());
    (function() {})();
    两种都可以, W3C建议用第一种
     
    2. 特点
    a.参数(形参,实参)
    (function(a, b){
    console.log(a + b)
    }(1, 5));
    a,b是形参, 1,5是实参
     
    b.保存立即执行函数的返回值,只需将其return,然后用变量储存起来
    var num= (function(a, b){
    return a + b;
    }(1, 5));
    
    console.log(num); // 6
    c. 立即执行函数的函数名,有没有无所谓。
    因为立即执行函数在执行完之后会被立即销毁,所以函数名可以没有,看下面的例子:
    var num= (function add(a, b){
    return a + b;
    }(1, 5));
    
    console.log(add); // Uncaught ReferenceError: add is not defined
    
    var num= (function (){ console.log(1) }()); console.log(num); //输出结果 1 和undefined, 说明函数已经被执行,而且执行完之后被销毁了
    d. (.....) 无论括号里面是什么都回被认为是表达式
    (function(){}), 括号里面的函数会被当成表达式
    (1), 1会被当成表达式
    (1+2), 1+2会被当成表达式
     
    5. 只有表达式才能被执行函数执行,在表达式后面加括号就表示被执行了
    (function(){} () // 这个括号表示执行)
    
    var test = function() { console.log(1)}(); //可以执行,因为这是函数表达式
    
    function test(a) { console.log(a) }() //会报语法错误,因为test是函数声明,不是函数表达式
    6.将函数声明转换成函数表达式的方法:在函数表达式前面加 + - && || !
    !function test(a) { console.log(a) }();
    undefined || function test(a) { console.log(a) }();
     
    7. 函数声明加立即执行()发不会报错的情况:在执行符号后面加上参数
    function test(a) { console.log(a) }(1);
    这种情况不会报错,因为上面的情况会被浏览器解析成:
    function test(a) { console.log(a) }
    (1)
    一个函数声明加一个函数表达式;
    表达式还有一种特殊情况:
    (1, 2) //这种情况不会报错,浏览器会认最后一个,后面的东西, 最后一个,后面必须要有东西,不然会报错
  • 相关阅读:
    Hz赫兹的定义
    NetCore 迅速接入微信支付+支付宝支付 payLink C# 交差并集
    C# 生产随机数 --几乎可以做到不重复
    Spark MLib完整基础入门教程
    (转)Scrapy 教程
    (转)python自顶向下设计步骤_python实现自顶向下,自底向上
    (转)scrapy架构图与执行流程
    (转)Python:字典(zip, dict)
    (转)APUE第13章 守护进程Deameon
    (转)Python开发指南
  • 原文地址:https://www.cnblogs.com/ycherry/p/11633966.html
Copyright © 2011-2022 走看看