JavaScript (function (){}()) 與(function(){})()

來源:互聯網
上載者:User

標籤:div   script   java   button   log   avl   title   www   builder   

function(){} 可以理解為它是一個定義的方法 只是讓瀏覽器知道  有這麼一個存在 並不會執行  執行時要帶() 

一般我們都會這樣子寫 

var a=function(){} ; a();

如果要整合寫的話  那麼就是 (function(){})()  這樣子就相當於 var a=function(){} ; a(); 定義了方法 並且執行了

如果你不寫function 前面的括弧  那麼對於瀏覽器來說 你只是聲明定義了一個方法  並不會執行  而且這個方法還是錯誤的(這裡暫且不提這些了) 

其實最外層的()就相當於 eval()函數 來執行括弧以內的邏輯代碼  可以百度一下JavaScript eval() 函數

那我們現在回頭看(function(){}())

 

(function(){}()) 其實可以這樣子看 我只是聲明定義了一個方法  並不會執行  而且這個方法還是錯誤的 編譯不會通過 但是我用eavl() 來執行就可以了

所以 (function(){}()) 就等與 eavl(function (){}()) 等於(function(){})() 等於 var a=function(){} ; a(); 其實都是聲明了 在使用


有興趣的話 可以自己試一下  這是我寫的測試代碼

 

<html>    <head>        <meta http-equiv=Content-Type content="text/html;charset=utf-8">        <title>hello builder</title>        <script type="text/javascript">            function test(){                var person={};                    (function(p){                        var name="";                        p.SetName=function(b){                            name=b;                        }                        p.GetName=function(){                            return  name;                        }                    }(person))                    person.SetName("撒嬌的小熊")                    alert(person.GetName())            }                            function tests(){                var person={};                eval(                    function(p){                        var name="";                        p.SetName=function(b){                            name=b;                        }                        p.GetName=function(){                            return  name;                        }                    }(person))                    person.SetName("撒嬌的小熊")                    alert(person.GetName())            }        </script>    </head>    <body>        <input type="button" onclick="test()" value="button"/>        <input type="button" onclick="tests()" value="button"/>    </body></html>

弱弱說一句 寫這些代碼 是為了瞭解閉包的 

大家有興趣想瞭解閉包 可以去查閱

 https://www.cnblogs.com/wangfupeng1988/p/3977924.html

寫的很好 

 

JavaScript (function (){}()) 與(function(){})()

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.