zoukankan      html  css  js  c++  java
  • bootstrap源码里的function加上了+号

    一般看JQuery插件里的写法是这样的

    (function($) {         
      //...  
    })(jQuery);

    今天看到bootstrap的javascript组件是这样写的

    !function( $ ){
      //...
    }( window.jQuery );

    为什么要在前面加一个 " ! " 呢?

    我们都知道,函数的声明方式有这两种

    function fnA(){alert('msg');}//声明式定义函数
    var fnB = function(){alert('msg');}//函数赋值表达式定义函数
    

    楼主问题中出现的两个函数,都是匿名函数。通常,我们调用一个方法的方式就是 FunctionName()

    但是,如果我们尝试为一个“定义函数”末尾加上(),解析器是无法理解的。

    function msg(){
      alert('message');
    }();//解析器是无法理解的
    

    定义函数的调用方式应该是 msg() ; 那为什么将函数体部分用()包裹起来就可以了呢?

    原来,使用括号包裹定义函数体,解析器将会以函数表达式的方式去调用定义函数。也就是说,任何能将函数变成一个函数表达式的作法,都可以使解析器正确的调用定义函数。而 ! 就是其中一个,而 + - || 都有这样的功能。

    另外,用 ! 可能更多的是一个习惯问题,不同的运算符,性能是不同的。

    就是为了能省略一个字符……

    // 这么写会报错,因为这是一个函数定义:
    function() {}()
    
    // 常见的(多了一对括号),调用匿名函数:
    (function() {})()
    
    // 但在前面加上一个布尔运算符(只多了一个感叹号),就是表达式了,将执行后面的代码,也就合法实现调用
    !function() {}()


  • 相关阅读:
    Locust性能测试-环境准备与基本使用 转自:悠悠
    Locust性能测试_先登录场景案例
    python_协程
    python_进程池以及线程池
    python_并发与通信
    python_进程与线程的补充
    python_并行与并发、多线程
    Hash算法:双重散列
    AVL树的插入和删除
    查找最小生成树:普里姆算法算法(Prim)算法
  • 原文地址:https://www.cnblogs.com/as3lib/p/5559928.html
Copyright © 2011-2022 走看看