<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] eg1 變量提升 ``` console.log(a); //undefined var a = 12; function fn(){ console.log(a); var a = 13; } fn(); //undefined console.log(a); //12 ``` eg2 作用域鏈的超找 ``` console.log(a); //undefined var a = 12; function fn(){ console.log(a); a = 13; } fn(); //12 console.log(a); //13 ``` eg3 作用域鏈的超找 ``` console.log(a); //報錯 a = 12; function fn(){ console.log(a); a = 13; } fn(); console.log(a); ``` eg4 判斷體與提升 不管條件成立不成立都會提升, 但新版瀏覽器中只有條件成立,進入判斷體后才會成立 ``` var foo = 1; function bar(){ if(!foo){ var foo = 10; } console.log(foo); } bar(); //10 ``` --- eg5 提升與函數執行過程 ``` var foo = 'hello'; (function(foo){ //=>私有作用域:foo='hello'(我們的foo和外面的foo是不同的變量) console.log(foo); //hello var foo = foo || 'world'; console.log(foo);//hello })(foo); //=>把全局FOO的值當做實參傳遞給私有作用域中的形參 console.log(foo);//hello ``` eg6 作用域鏈,與函數執行 var a = 9; function fn(){ a = 0; return function (b){ return b+a++; } } var f = fn(); console.log(f(5)); //會將a置為0//5 cosnole.log(fn()(5)); //會將a置為0//5 console.log(f(5)); //不會再將a置為0,此時a=1 //6 console.log(a); //2 ``` eg7 私有變量和全局變量沒有直接的關系,但是可能存在間接的關系 =>私有變量和全局變量都是引用數據類型的值,而且指向的是相同的堆內存 ``` var ary = [1,2,3,4]; function fn(ary){ ary[0] = 0; //這里改變的第一個數組成員 ary = [0]; //這里指向了另一個地址 ary[0] = 100; //將新地址中的第一個成員設置為了100 return ary; //返回新地址 } var res = fn(ary); console.log(ary); //[0,2,3,4] console.log(res); //[100] ``` ![](https://box.kancloud.cn/8207d77dfa1a8b0000b38ba3b7bc65b3_1811x707.png) eg8 ``` function fn(i){ return function(n){ console.log(n + (--i)); } } var f = fn(2); f(3); //4 fn(4)(5); //8 fn(6)(7); //12 f(8); //8 ``` eg9 ``` var num = 10; var obj = {num:20}; obj.fn = (function(num){ //私有20 this.num = num*3; //全局num = 60; num++; //私有21; return function(n){ this.num += n; //全局65 //obj.num->30 num++; //私有22 //私有23 console.log(num); } })(obj.num); var fn = obj.fn; fn(5); //22 obj.fn(10); //23 console.log(num,obj.num); //65 30 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看