成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

JavaScript筆記

geekzhou / 3285人閱讀

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

JavaScript引擎的內(nèi)部運(yùn)行機(jī)制
http://www.ruanyifeng.com/blo...
JavaScript是單線程

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

任務(wù)隊(duì)列

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

返回函數(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ù)內(nèi)部可以直接讀取全局變量
函數(shù)外部自然無法讀取函數(shù)內(nèi)的局部變量
**函數(shù)內(nèi)部聲明變量的時候,一定要使用var命令。如果不用的話,你實(shí)際上聲明了一個全局變量!
Javascript語言特有的"鏈?zhǔn)阶饔糜?結(jié)構(gòu)(chain scope),子對象會一級一級地向上尋找所有父對象的變量。所以,父對象的所有變量,對子對象都是可見的,反之則不成立。
閉包的用途

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

function a() {
    var i = 0;//局部變量
    return function b() { //a是b的父函數(shù),b被賦給一個全局變量,導(dǎo)致b始終在內(nèi)存中,而a依賴于b,因此a也始終在內(nèi)存中,不會在調(diào)用結(jié)束后,被垃圾回收機(jī)制(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();
         //先清理上一次的調(diào)用觸發(fā)(上一次調(diào)用觸發(fā)事件不執(zhí)行)
         clearTimeout(timer);
         //如果不存觸發(fā)時間,那么當(dāng)前的時間就是觸發(fā)時間
         if(!t_start){
             t_start = t_cur;
         }
         //如果當(dāng)前時間-觸發(fā)時間大于最大的間隔時間(mustDelay),觸發(fā)一次函數(shù)運(yùn)行函數(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內(nèi)連續(xù)觸發(fā)的調(diào)用,后一個調(diào)用會把前一個調(diào)用的等待處理掉,但每隔200ms至少執(zhí)行一次
document.onmousemove=delayFn2(fn1,100,200)
鉤子函數(shù)

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

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/89451.html

相關(guān)文章

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

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

    fuyi501 評論0 收藏0
  • 重學(xué)前端學(xué)習(xí)筆記(七)--JavaScript對象:面向?qū)ο筮€是基于對象?

    摘要:對象有狀態(tài)對象具有狀態(tài),同一對象可能處于不同狀態(tài)之下。中對象獨(dú)有的特色對象具有高度的動態(tài)性,這是因?yàn)橘x予了使用者在運(yùn)行時為對象添改狀態(tài)和行為的能力。小結(jié)由于的對象設(shè)計(jì)跟目前主流基于類的面向?qū)ο蟛町惙浅4螅瑢?dǎo)致有不是面向?qū)ο筮@樣的說法。 筆記說明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些...

    mayaohua 評論0 收藏0
  • 重學(xué)前端學(xué)習(xí)筆記(七)--JavaScript對象:面向?qū)ο筮€是基于對象?

    摘要:對象有狀態(tài)對象具有狀態(tài),同一對象可能處于不同狀態(tài)之下。中對象獨(dú)有的特色對象具有高度的動態(tài)性,這是因?yàn)橘x予了使用者在運(yùn)行時為對象添改狀態(tài)和行為的能力。小結(jié)由于的對象設(shè)計(jì)跟目前主流基于類的面向?qū)ο蟛町惙浅4?,?dǎo)致有不是面向?qū)ο筮@樣的說法。 筆記說明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些...

    yy736044583 評論0 收藏0
  • 重學(xué)前端學(xué)習(xí)筆記(七)--JavaScript對象:面向?qū)ο筮€是基于對象?

    摘要:對象有狀態(tài)對象具有狀態(tài),同一對象可能處于不同狀態(tài)之下。中對象獨(dú)有的特色對象具有高度的動態(tài)性,這是因?yàn)橘x予了使用者在運(yùn)行時為對象添改狀態(tài)和行為的能力。小結(jié)由于的對象設(shè)計(jì)跟目前主流基于類的面向?qū)ο蟛町惙浅4螅瑢?dǎo)致有不是面向?qū)ο筮@樣的說法。 筆記說明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些...

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

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

    Vicky 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<