首页 > javascript自执行那个代码有整个都写在一个括号中的写法,好像还有其他几种写法,麻烦帮总结一下

javascript自执行那个代码有整个都写在一个括号中的写法,好像还有其他几种写法,麻烦帮总结一下

javascript自执行那个代码有好几种写法,有的写在整个都在一个括号中,还有类似的几种写法,能否帮总结一下,有点乱。
就是下面这个:

(function(){})()

有这样一个例子:

(function(){
        $("#backtop").click(function(){return $("body,html").animate({scrollTop:0}),!1});
    })();

上面这个语句有什么语法错误么?
编辑器webstorm把最后那个逗号处于选中状态,多数时候,被webstorm选中,一般是有点什么问题,但不知道是什么问题,麻烦帮解答一下。


我的理解是,你用function(){}这样的是函数的声明,是不能执行的,想要执行就要变成表达式,然后就用各种方法让函数的声明变成表达式的样子,比如在函数外面加个括号,就是(function(){})()的样子,再或者加个运算符比如~function(){}(),就是这样。


函数自执行的方式,我见过的有三种

(function() {})();

+function() {}();

!function() {}();

至于那段代码有没有错误,我表示看不懂,从来没见过

return xxxx, !1

这样的写法。


自执行函数 那个 ?
(function(){}())
(function(){})()


「Javascript 代码」概念很宽泛。应该指出细节,如闭包、匿名函数等


没有啊,那个匿名函数只会去调用一次 因为是匿名的,也没有任何指向。function关键字定义函数的时候本来就会返回一个函数的 就像func=function(){} 这样是返回了一个函数。你再使用()去调用而已。


这是我初学JavaScript自己总结的,也学了没几天,要是有错误,和理解不到的地方,欢迎大家指出来,我改改,也学习!

/**事件加载说明:

◆◆第0种:怎么在【整个页面】添加事件?

1.可以用在 <标签>内加载事件;

    <body onkeyup="FunctionName(event)" onmousedown="FunctionName(event)">
2.如果想在<script>标签里加事件;
    直接把 document 当 body 体;

    document.onmousedown = FunctionName;
    document.onkeyup     = FunctionName;
3.jQuery 写法:★★注意要是之后的 属性 或者 方法 是JavaScript 原生态语法,需要转换一下,就是加个[0];

    $("body").on("mouseup" , FunctionName);
    $("body").on("keyup"   , FunctionName);

    或

        $("*").on("mouseup" , FunctionName);
        $("*").on("keyup"   , FunctionName);

    或

        $(document).on("mouseup" , FunctionName);
        $(document).on("keyup"   , FunctionName);
    !! $("body") 和 $("*") $(document) 区别:

        $("body")
            body 体;
        $("*")
            全部标签 ,包括 <html> , <?php >;
        $(document)
            整个页面;

◆◆第1种:<标签>内加载事件

<标签名 on事件= " 事件处理程序 " >

◆1.1 执行动作:
    <div onclick="document.bgColor='red'">aaa</div>
◆1.2 执行 function

    方法:1.2.1

    <div onclick="函数名()">aaa</div>

    <div onclick="BIANHONG()">aaa</div>  //这里双引号""加不加都行;
    <script>

        function BianHong()
            {document.bgColor="red"}
    </script>

◆◆第2种:统一写在 <script> 里:

◆2.1 直接用 ID 添加事件:
    这是一种【【特例】】,只有用ID作为事件依据的时候才行;

    <div id="one">aa</div>

    <script>

        one.onclick=function(){
        document.bgColor='red';}

    </script>
◆2.2 用DOM对象添加事件

    document.【DOM捕获函数】.【("类名ID或标签")】.【激活事件】=function(){.. .}

        ★注意,这里的 function 没有【函数名】

        这个和上一个一样,只不过把 one 改成了 document.getElementById("one");
        当然也可以换成 document.getElementsByName("?")[?] 等其他DOM方法;

    <div id="one">aa</div>

    <script>

        document.getElementById("one").onclick=function(){
        document.bgColor='red';}

    </script>
◆2.3 把事件和动作分开写:

    document.【DOM捕获函数】.("【类名ID或标签】").【激活事件】=【函数名function实体】      //★★★★注意无括号
    function 【函数名】(){.....}

        这个和上一个基本一样:
        就是把 function 定义成了一个变量:
    <div id="one">aa</div>

    <script>

        document.getElementById("one").onclick=BIANHONG;      //★★★★注意无括号

        function BIANHONG()
        {document.bgColor='red';}

    </script>
    /*补充:
    函数名加括号BIANHONG()就是调用返回值:
    var a = BIANHONG();
    意思是先运算 function BIANHONG(){.. .},然后再把结果赋值给 a ;

    函数名不加括号BIANHONG就是只是复制给函数;
    var a = BIANHONG;
    意思是定义了一个 和 a 一模一样的函数;*/

◆◆第3种:在 <script> 里利用 jQuery 添加事件:

格式1:
    $( "【jQuery选择器】" ).【激活事件】( 【函数名或function实体】 )

格式2:
    $( "【jQuery选择器】" ).on( "【激活事件】" , 【函数名或function实体】 )
    和上一个一模一样,不过 采用 jQuery 格式,写法一点都不一样:
    别忘了导入 jQuery库;
    jQuery 语法 也不一样;
    格式1:

           <div id="one">aa</div>

        <script>
            function BIANHONG()
            {document.bgColor='red';}

            $("#one").click(BIANHONG);
        </script>
    格式2:

        <div id="one">aa</div>

        <script>
            function BIANHONG()
            {document.bgColor='red';}

            $("#one").on("click",BIANHONG);
        </script>
    把事件和function 写在一起:【不用看,因为不好改】:

        <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>

        <div id="one">aa</div>

        <script>
            $("#one").click(function(){$("body").css("background-color","red");});
        </script>

*/

【热门文章】
【热门文章】