日本xxxx18视频在线观看-日本xxxx1819-日本xxxwww在线观看-日本xxx-日本xx-日本www在线视频

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

JS普通函數(shù)與箭頭函數(shù)的區(qū)別

freeflydom
2025年2月19日 10:53 本文熱度 1028

作用域

在討論箭頭函數(shù)與普通函數(shù)的區(qū)別之前,我們需要先討論一下作用域的概念。作用域分為:全局作用域,局部作用域,塊級(jí)作用域

  • 全局作用域
    •   全局作用域是在整個(gè)代碼中都可訪(fǎng)問(wèn)的作用域。
  • 局部作用域
    •   局部作用域一般代指函數(shù)作用域(Function Scope),它是在函數(shù)內(nèi)部聲明的作用域,函數(shù)內(nèi)部的變量和函數(shù)只能在函數(shù)內(nèi)部訪(fǎng)問(wèn),外部無(wú)法直接訪(fǎng)問(wèn)
  • 塊級(jí)作用域
    •   塊級(jí)作用域是在代碼塊(通常是由大括號(hào){}包裹起來(lái)的部分)內(nèi)聲明的作用域。比如if(){...}、for(...){...}、try{...}等
  • 示例
    <script type="text/javascript">
            // 全局作用域
            const global_a="我是全局作用域";
            const b=function()
            {
                const local_b="我是局部作用域";
                try{
                    const block_c="我是塊級(jí)作用域";
                    console.log(block_c);
                }
                catch(ex)
                {
                }
                console.log(global_a);
                console.log(local_b);
            }
            b();
        </script>

     

箭頭函數(shù)與普通函數(shù)的區(qū)別

 

  1. 語(yǔ)法的不同

    • 箭頭函數(shù)語(yǔ)法:箭頭函數(shù)由 小括號(hào)()、箭頭=》、大括號(hào){}組成,例如(x)=>{ return 2*x;},  (x)=> 2*x...  ,其中括號(hào)和大括號(hào)依情況可以省略
    • 普通函數(shù)語(yǔ)法:普通函數(shù)由關(guān)鍵字function、小括號(hào)、大括號(hào){}組成,例如:function(x)=>{return 2*x;}
  2. this綁定的不同

    • 箭頭函數(shù)沒(méi)有自己的this綁定,它會(huì)繼承外層作用域的this值(繼承規(guī)則:向外層作用域中, 一層層查找this, 直到有this的定義)。而普通函數(shù)的this值是根據(jù)調(diào)用時(shí)的上下文決定的。這里給出一些示例
      • <div>
                <button id="bt1">利用箭頭函數(shù)構(gòu)造事件處理函數(shù)</button>
                <button id="bt2">利用普通函數(shù)構(gòu)造事件處理函數(shù)</button>
            </div>
            <!-- 箭頭函數(shù)沒(méi)有自己的this綁定,它會(huì)繼承外層作用域的this值。而普通函數(shù)的this值是根據(jù)調(diào)用時(shí)的上下文決定的 -->
            <script type="text/javascript">
                const bt1 = document.querySelector("#bt1");
                const bt2 = document.querySelector("#bt2");
                // 這里有兩個(gè)點(diǎn)擊事件,一個(gè)綁定的事件處理函數(shù)為普通函數(shù),一個(gè)為箭頭函數(shù)
         
                bt2.addEventListener("click", function() {
                    //這里的this是id="bt2",this指向調(diào)用這個(gè)函數(shù)的對(duì)像
                    console.log(this);
                });
         
                bt1.addEventListener("click", () => {
                    //這里的this是window,箭頭函數(shù)的this指向最近的外層作用域中的this所指對(duì)象
                    console.log(this);
                });
            </script>
        <div>
                <button id="bt1">利用箭頭函數(shù)構(gòu)造事件處理函數(shù)</button>
                <button id="bt2">利用普通函數(shù)構(gòu)造事件處理函數(shù)</button>
            </div>
            <!-- 箭頭函數(shù)沒(méi)有自己的this綁定,它會(huì)繼承外層作用域的this值。而普通函數(shù)的this值是根據(jù)調(diào)用時(shí)的上下文決定的 -->
            <script type="text/javascript">
                const obj = {
                    a() {
                        setTimeout(function() {
                            //因?yàn)槭莣indow對(duì)象調(diào)用了定時(shí)函數(shù),所以這里的this是window
                            console.log(this);
                        })
                    },
                    b() {
                        setTimeout(() => {
                            //因?yàn)榧^函數(shù)里的this指向了最近的外層函數(shù)作用域中,所以這里的this是obj對(duì)象
                            console.log(this);
                        })
                    }
                }
                obj.a(); // 打印出 Window
                obj.b(); // 打印出 當(dāng)前對(duì)象obj
            </script>

         

  3. 構(gòu)造函數(shù):箭頭函數(shù)不能用作構(gòu)造函數(shù),不能使用new關(guān)鍵字實(shí)例化對(duì)象。普通函數(shù)可以被用作構(gòu)造函數(shù)創(chuàng)建對(duì)象實(shí)例

  4. arguments對(duì)象:箭頭函數(shù)沒(méi)有自己的arguments對(duì)象,它會(huì)繼承外層作用域的arguments對(duì)象。普通函數(shù)則會(huì)創(chuàng)建自己的arguments對(duì)象

  5. 箭頭函數(shù)沒(méi)有原型屬性(prototype)

  6. 箭頭函數(shù)不能通過(guò)call()、apply()或bind()方法來(lái)改變this的指向

總結(jié)

普通函數(shù)比較靈活,適用于各種場(chǎng)景,包括作為構(gòu)造函數(shù)、改變this指向等。而箭頭函數(shù)更適合用于簡(jiǎn)單的函數(shù)表達(dá)式和回調(diào)函數(shù),需要根據(jù)具體的使用場(chǎng)景和需求來(lái)選擇使用箭頭函數(shù)還是普通函數(shù)。

轉(zhuǎn)自https://www.cnblogs.com/smallstone/p/18106142


該文章在 2025/2/19 10:56:07 編輯過(guò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶(hù)的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产精品永久 | 俺去俺来也www色官网 | 在线观看的网站黄2025 | 国产视频a区 | 国产一区激情在线播放 | 国产精品三级 | 国产日韩精品aⅴ | 欧美性猛交xxxx乱大交极品 | 男女多人混交群体交乱 | 精品人伦一区二区三区 | 俺去啦电影网 | 91国内揄拍国内精品情侣对白 | 国产精品色色日本 | 国产黄大片在线视频 | 成人精品一区二区三四 | 精品国产一区二区三区不卡在 | a级国产乱理伦 | 日韩大片高清播放器 | 国产一级在线观看www色 | 不要钱不用登陆的污直播 | 99看视频| 99re热这里只有精品视频 | 国产舌乚八伦偷品w | 国产一区二区在线视频播放页 | 国产在线看片免费人成视频 | 日韩午夜在线一区二区三区 | 欧美日产成人高清视频 | 国产女人体一区二区三区 | 51成人免费动漫在线 | 日韩欧美视频在线观看视频不 | 成人福利影视 | 国产愉拍精品视频手 | 91精品欧美综合在线观看 | 国产老肥老太在线视频 | 国产一级录像视频播放片 | 亚洲一区二区国产日韩欧美 | 国产又粗又长的视频 | 欧洲中文日韩亚洲精品视频 | 免费a级片在线观看 | 日韩视频网站在线观看 | 岛国一区二区三区 |