成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript筆記

geekzhou / 3243人閱讀

摘要:引擎的內部運行機制是單線程作為瀏覽器腳本語言,的主要用途是與用戶互動,以及操作。這決定了它只能是單線程,否則會帶來很復雜的同步問題任務隊列單線程就意味著,所有任務需要排隊,前一個任務結束,才會執(zhí)行后一個任務。

JavaScript引擎的內部運行機制
http://www.ruanyifeng.com/blo...
JavaScript是單線程

作為瀏覽器腳本語言,JavaScript的主要用途是與用戶互動,以及操作DOM。這決定了它只能是單線程,否則會帶來很復雜的同步問題

任務隊列

單線程就意味著,所有任務需要排隊,前一個任務結束,才會執(zhí)行后一個任務。如果前一個任務耗時很長,后一個任務就不得不一直等著
同步任務(synchronous)指的是,在主線程上排隊執(zhí)行的任務,只有前一個任務執(zhí)行完畢,才能執(zhí)行后一個任務;
異步任務(asynchronous)指的是,不進入主線程、而進入"任務隊列"(task queue)的任務,只有"任務隊列"通知主線程,某個異步任務可以執(zhí)行了,該任務才會進入主線程執(zhí)行
req.send方法是Ajax操作向服務器發(fā)送數(shù)據(jù),它是一個異步任務,意味著只有當前腳本的所有代碼執(zhí)行完,系統(tǒng)才會去讀取"任務隊列"

返回函數(shù)
function func(x,y){
   var value=300;
   return function(){
    return value+x+y;
  };
}
console.info(func(100,200)());//600  
參數(shù)
var values = [ 213, 16, 2058, 54, 10, 1965, 57, 9 ];
values.sort(function(value1,value2){return value2 - value1; });
this
window.color = "red";
var o = { color: "blue" };
function  sayColor(){
    alert(this.color);
}
sayColor(); //red
sayColor.call(this); //red
sayColor.call(window); //red
sayColor.call(o); //blue
閉包(closure)
http://www.ruanyifeng.com/blo...
Javascript語言的特殊之處,就在于函數(shù)內部可以直接讀取全局變量
函數(shù)外部自然無法讀取函數(shù)內的局部變量
**函數(shù)內部聲明變量的時候,一定要使用var命令。如果不用的話,你實際上聲明了一個全局變量!
Javascript語言特有的"鏈式作用域"結構(chain scope),子對象會一級一級地向上尋找所有父對象的變量。所以,父對象的所有變量,對子對象都是可見的,反之則不成立。
閉包的用途

,一個是前面提到的可以讀取函數(shù)內部的變量,
另一個就是讓這些變量的值始終保持在內存中

function a() {
    var i = 0;//局部變量
    return function b() { //a是b的父函數(shù),b被賦給一個全局變量,導致b始終在內存中,而a依賴于b,因此a也始終在內存中,不會在調用結束后,被垃圾回收機制(garbage collection)回收。
      console.info(++i);
    };
};
var c = a();
for (var i = 0; i < 10; i++) {
    c();
}
節(jié)流函數(shù)
function delayFn2 (fn, delay, mustDelay){
     var timer = null;
     var t_start;
     return function(){
         var context = this, args = arguments, t_cur = +new Date();
         //先清理上一次的調用觸發(fā)(上一次調用觸發(fā)事件不執(zhí)行)
         clearTimeout(timer);
         //如果不存觸發(fā)時間,那么當前的時間就是觸發(fā)時間
         if(!t_start){
             t_start = t_cur;
         }
         //如果當前時間-觸發(fā)時間大于最大的間隔時間(mustDelay),觸發(fā)一次函數(shù)運行函數(shù)
         if(t_cur - t_start >= mustDelay){
             fn.apply(context, args);
             t_start = t_cur;
         }
         //否則延遲執(zhí)行
         else {
             timer = setTimeout(function(){
                 fn.apply(context, args);
             }, delay);
         }
     };
}
var count=0;
function fn1(){
    count++;
    console.log(count)
} 
//100ms內連續(xù)觸發(fā)的調用,后一個調用會把前一個調用的等待處理掉,但每隔200ms至少執(zhí)行一次
document.onmousemove=delayFn2(fn1,100,200)
鉤子函數(shù)

使用data-*屬性作為JS鉤子,是不正確的。
data-*屬性,根據(jù)規(guī)范,用于存儲自定義的數(shù)據(jù)隱私的頁面或應用程序
data-* 屬性被設計來存儲數(shù)據(jù),而不被綁定到

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/89451.html

相關文章

  • javascript高級程序設計》筆記:內存與執(zhí)行環(huán)境

    摘要:因此,所有在方法中定義的變量都是放在棧內存中的當我們在程序中創(chuàng)建一個對象時,這個對象將被保存到運行時數(shù)據(jù)區(qū)中,以便反復利用因為對象的創(chuàng)建成本通常較大,這個運行時數(shù)據(jù)區(qū)就是堆內存。 上一篇:《javascript高級程序設計》筆記:繼承近幾篇博客都會圍繞著圖中的知識點展開 showImg(https://segmentfault.com/img/bVY0C4?w=1330&h=618);...

    fuyi501 評論0 收藏0
  • 重學前端學習筆記(七)--JavaScript對象:面向對象還是基于對象?

    摘要:對象有狀態(tài)對象具有狀態(tài),同一對象可能處于不同狀態(tài)之下。中對象獨有的特色對象具有高度的動態(tài)性,這是因為賦予了使用者在運行時為對象添改狀態(tài)和行為的能力。小結由于的對象設計跟目前主流基于類的面向對象差異非常大,導致有不是面向對象這樣的說法。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些...

    mayaohua 評論0 收藏0
  • 重學前端學習筆記(七)--JavaScript對象:面向對象還是基于對象?

    摘要:對象有狀態(tài)對象具有狀態(tài),同一對象可能處于不同狀態(tài)之下。中對象獨有的特色對象具有高度的動態(tài)性,這是因為賦予了使用者在運行時為對象添改狀態(tài)和行為的能力。小結由于的對象設計跟目前主流基于類的面向對象差異非常大,導致有不是面向對象這樣的說法。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些...

    yy736044583 評論0 收藏0
  • 重學前端學習筆記(七)--JavaScript對象:面向對象還是基于對象?

    摘要:對象有狀態(tài)對象具有狀態(tài),同一對象可能處于不同狀態(tài)之下。中對象獨有的特色對象具有高度的動態(tài)性,這是因為賦予了使用者在運行時為對象添改狀態(tài)和行為的能力。小結由于的對象設計跟目前主流基于類的面向對象差異非常大,導致有不是面向對象這樣的說法。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些...

    xingpingz 評論0 收藏0
  • 讀書筆記:編寫高質量javascript的68個方法

    摘要:第條盡量少使用全局對象避免聲明全局變量盡量聲明局部變量避免對全局變量增加屬性第條始終聲明局部變量第條避免使用語句第條熟練使用閉包的函數(shù)值包含了比調用他們時執(zhí)行所需要的代碼還要更多的信息。那些在其所涵蓋的作用域內跟蹤變量的函數(shù)稱為閉包。 書還沒看完。一遍看,一遍寫讀書筆記。 這本書的序是JavaScript之父Brendan Eich寫的,作者是JavaScript標準化委員會專家。可想...

    Vicky 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<