日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js之作用域

發布時間:2023/12/2 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js之作用域 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  1.什么是作用域

  作用域是用于收集存儲維護變量,以及當前執行代碼聲明的變量所擁有的權限,

   例如 :?

      function foo(a){

        console.log(a); --------????1???

      };

      foo(666);

      console.log(a); -------?? 2? ?

    

    此時執行該段代碼??

     1? -- 處打印我們得到? ?666? 因為在函數中聲明了 a 參數? 且執行foo函數像里面傳入666就相當于將a賦值為666? 所以console.log? 查詢a可以獲得666

     2? --處打印我們獲取一個報錯?Uncaught ReferenceError: a is not defined? 說a沒有定義,這是為什么呢.

     2.1 首先我們來說明下LHS 查詢和RHS查詢(書上給的解釋是: 賦值操作的左側或右側)

        我的理解是

          LHS? ---? 被賦值的變量

          RHS ---? 查詢變量的值

        且這兩種查詢都是從本身所在作用域向上冒泡查詢直到遇到定義的變量位置,

        不同的是 :

          1.RHS 在本作用域查詢變量遇到不存在需要查詢的變量則逐級向上一級作用域查詢,查到則停止,否則直到到window作用域還沒有查到則會返回一個 xxx? is not defined

          2.LHS?在本作用域查詢變量遇到不存在需要查詢的變量則逐級向上一級作用域查詢,查到則停止,?到window作用域還沒有查到則會默認再window 全局變量處偷偷的創建這個需要查詢的變量

    下面用一段簡單的代碼來說明 LHS 和 RHS

      function foo1(a){

        console.log(g)?

          //這里將會出現報錯? g is not defined? ?因為這里執行的RHS查詢 ,在查詢g的時候發現foo作用域沒有,所以向他的上一級window對象內查詢也沒有存在,所以返回not defined

        console.log(a g);?

        g =? a;

      }

      foo1(666);

        

      

      function foo2(a){

        g =? a;

        //在FOO2函數中 a向g賦值? 此時g在foo2作用域中也不存在,他也向上查詢,遇到window對象,發現其中也沒有定義g 變量,但是此時呢他就在window對象中創建了一個g對象,所以window對象中就有這個變量

        console.log(a g);? ?-----? ?打印控制臺獲得 4?

      }

      foo2(2);

    //如果將foo2中 g = a 換成? a = g 會怎樣呢? --- 大家可以試試哦??

?


更多專業前端知識,請上 【猿2048】www.mk2048.com

總結

以上是生活随笔為你收集整理的js之作用域的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。