zoukankan      html  css  js  c++  java
  • "!function",自执行函数表达式

    如题为自执行函数表达式。
    在这种情况下,解析器在解析function关键字的时候,会将相应的代码解析成function表达式,而不是function声明。

    下面2个括弧()都会立即执行

    (function () { /* code */ } ()); // 推荐使用这个
    (function () { /* code */ })(); // 但是这个也是可以用的

    由于括弧()和JS的&&,异或,逗号等操作符是在函数表达式和函数声明上消除歧义的,
    所以一旦解析器知道其中一个已经是表达式了,其它的也都默认为表达式

    var i = function () { return 10; } ();
    true && function () { /* code */ } ();
    0, function () { /* code */ } ();

    如果不在意返回值,或者不怕难以阅读,甚至可以在function前面加一元操作符号

    !function () { /* code */ } ();
    ~function () { /* code */ } ();
    -function () { /* code */ } ();
    +function () { /* code */ } ();
  • 相关阅读:
    LeetCode数据库178
    LeetCode数据库181
    LeetCode数据库177
    LeetCode数据库176
    HNOI2003 消防局的设立
    HNOI2001 产品加工
    Luogu P1020 关路灯
    NOIP2004 虫食算
    SP2713 GSS4-Can you answer these queries IV
    APIO2008 免费道路
  • 原文地址:https://www.cnblogs.com/jinxiudaxin/p/6516028.html
Copyright © 2011-2022 走看看