js匿名函數

(function($){})(jquery) == (function($){})(jQuery)

实际上是匿名函数

用于存放开发插件的代码

作用(非常有用):

这种写法的最大好处是形成闭包。在(function($) {…})(jQuery)在内部定义的函数和变量只能在此范围内有效。

  形成是否函数函数、私有变量的概念。比如:

  1. var i=3;
  2. function init(){
  3. alert("外层init:"+i);
  4. }
  5. (function($) {
  6. var i=2;
  7. function init(){
  8. alert("内层init:"+i);
  9. }
  10. init();
  11. })(jQuery);
  12. init();

执行结果:

内层init:2

外层init:3

以下是一個實驗的例子

<script src="js/jquery-1.7.1.min.js"></script>
   <script type="text/javascript">

//(function ($) {
        //    alert(1);
        //    $.a = function (i)
        //    {
        //        alert(i.name);
        //        this.shows = function (j)
        //        {
        //            alert(j);
        //            alert(3);
        //            abc();
        //            def();
        //        }
        //        abc = function ()
        //        {
        //            alert(4);
        //        }
        //        def = function ()
        //        {
        //            i.callBack(666666);
        //        }
        //    }
        //})($);
        //var i = new $.a({
        //    name:"sdy",
        //    callBack: function (no)
        //    {
        //        alert(no);
        //        alert(1234);
        //    }
        //});
        //i.shows(123);

function MM($) {
            alert(2);
            $.a = function (i) {
                alert(i.name);
                this.shows = function (j) {//this為必須寫的
                    alert(j);
                    alert(1);
                    cc();
                }
                aa = function () {
                    alert("aa");
                }
                bb = function () {
                    alert("bb");
                }
                cc = function ()
                {
                    i.callBank("回調函數");//回調函數 callBack 寫錯也沒事 哈哈哈哈
                }
            }
        };
        MM(jQuery);
        var abc = new $.a({
            name: "sdy", callBank: function (no)
            {
                alert(no);
            }
        });
        abc.shows(1);
        //(function ($) {
        //    alert(1);
        //    alert($);
        //})(jQuery);

//function MM($) {
        //    alert(2);
        //}
        //MM(jQuery)
            
        //    (function(str){alert(str)})("aaa");
        ////相当于:
        //function OutPutFun(str) { alert(str); };
        //OutPutFun("output");

时间: 2024-10-24 23:22:20

js匿名函數的相关文章

js函數

函數是什麼?函數就是被事件驅動或者調用執行的可重複的代碼塊. 函數聲明: 使用關鍵詞function,關鍵詞function大小敏感. function a{代碼塊} 局部變量: 在函數內部聲明的變量,為局部變量: 作用域只能被函數內部的方法訪問: 生存期是從函數生命開始創建對象,函數執行完後變量被刪除: 全局變量: 不在函數中聲明的變量叫做全局變量 作用域可以被所有函數和腳本訪問: 生存期在頁面關閉時,變量被刪除: 沒有關鍵詞的變量賦值無論在什麼位置賦值,都是全局變量. 函數在調用時可以給參數

學習日記:函數和對象

2016-2-21 1. Living without an aim is like sailing without a compass. 生活沒有目標,猶如航海沒有羅盤. 2. 無論是現實世界還是計算機世界,可讀性都是相當重要的,因為這涉及到人們的意識或者是認識效率,一般文字比數字的可理解性和可讀性要好,圖片的可讀性最強. a) 一般數學是比較抽象的,因為其中充滿著各種阿拉伯數字和已經不能再簡化的希臘字符. b) 數學家的得意之作就是覺得自己是在世界科學界的最巔峰. c) 我們能用數學工具處理

對比:莫比烏斯反演與歐拉函數

最近題讓我非常困惑,貌似我現在已經完全分不清楚哪些題用莫比烏斯反演,哪些用歐拉函數. 下面簡單總結一下,莫比烏斯反演處理的是 求segma(gcd(x,y)) 1<=x<=n,1<=y<=m (見<能量項鍊>) gcd(x,y) = k   1<=x<=n 1<=y<=m  求x,y對數 (見<bzoj 2301  problem b>) 莫比烏斯反演原來是解決以上問題2的,大體思路是 設F(a,b,k)表示1<=x<=a

SQL窗口函數一例

需求: MSSQL,列出服務實例中所有數據庫的如下信息: 數據庫ID.數據庫名.創建日期.數據文件類型.數據文件大小.數據庫總大小.文件所在路徑. 寫法(後面的百分比為所花時間占比): -- 连接子查询 (47%) WITH cte_TotalSize AS ( SELECT database_id ,CAST(SUM(size) AS FLOAT)/128 AS [TotalSize(MB)] FROM sys.master_files GROUP BY database_id ) SELEC

SQL窗体函數一例

需求: MSSQL,列出服務實例中全部數據庫的例如以下信息: 數據庫ID.數據庫名.創建日期.數據文件類型.數據文件大小.數據庫總大小.文件所在路徑. 寫法(後面的百分比為所花時間占比): -- 连接子查询 (47%) WITH cte_TotalSize AS ( SELECT database_id ,CAST(SUM(size) AS FLOAT)/128 AS [TotalSize(MB)] FROM sys.master_files GROUP BY database_id ) SEL

ORACLE字符拆分函數,返回結果集

ORACLE不能像MSSQL那樣支持直接返回表類型,所以要先創建一種自定義類型.這裏用到的是嵌套表(Nested Table). -- Nested Table CREATE OR REPLACE TYPE split_str IS TABLE OF VARCHAR(100); / -- Function CREATE OR REPLACE FUNCTION fn_Split ( p_Str VARCHAR2, p_Delimiter VARCHAR2 ) RETURN split_str PI

js匿名函数闭包

函数声明: function functionName(arg0,arg1){ //函数体 } 函数表达式: var functionName = function(arg0,arg1){ //函数体 } 函数声明和函数表达式之间的主要区别是前者会在代码执行前被加载到作用域中,而后者是在代码执行到那一行的时候才会有定义.另一个区别是函数声明会给函数指定一个名字,而函数表达式则创建一个匿名函数,然后将这个函数赋给一个变量 1 递归 递归函数是在一个函数通过名字调用自身的情况下构成的,例如: fun

JS匿名函数声明,调用;JS闭包详解(转载)

js匿名函数的代码如下:(function(){ // 这里忽略jQuery 所有实现 })(); 半年前初次接触jQuery 的时候,我也像其他人一样很兴奋地想看看源码是什么样的.然而,在看到源码的第一眼,我就迷糊了.为什么只有一个匿名函数又没看到运行(当然是运行了…… ),就能有jQuery 这么个函数库了?于是,我抱着疑问来到CSDN .结果相信现在很多人都很清楚了(因为在我之 后也不乏来者,呵呵~ ).当一个匿名函数被括起来,然后再在后面加一个括号,这个匿名函数就能立即运行起来!真神奇哦

EF架构~在Linq to Entity中使用日期函數

回到目录 眾所周知,在linq to entity的查询语句中,不允许出现ef不能识别的关键字,如Trim,Substring,TotalDays等.net里的关键字,在EF查询里都是不被支持的,它的原因可能是为了更好的提高查询的性能吧,毕竟,好的性能取决于你的程序标准,有了一个严格的标准,才能设计出好的程序来. 今天主要说一下,EF为日期方法留的一个后门,<后门>这个词大家在中国社会都应该知道了,顾名思义,就是反着原则走,你的原则对我没有用,哈哈!这东西有时候是有用的,因为在大的原则下,很可