1. 程式人生 > >原生js學習筆記(一)

原生js學習筆記(一)

js程式是單執行緒依次執行,例如
for(var i=1;i<=3;i++){
  console.log(i);
  setTimeout(function(){
    console.log(i); //輸出:1,2,3,4,4,4
  },0)
}

js定時器有兩種:setTimeout(超時呼叫)和 setInterval(間歇呼叫),都屬於非同步任務,即當主執行緒上所有同步任務執行完畢,且主執行緒讀取任務佇列上的其他非同步任務(Promise、Ajax等)推入執行棧且執行完畢後,才開始執行定時器的程式碼。這裡的同步任務就是指第二行的console.log(i)。並且,這三個4是同時輸出的,因為這三個定時器在同步任務執行完後,同時推入程序,這與後面的延遲時間無關。

js採用嵌入程式碼的優勢:可維護性、可快取、適應未來

ECMAScript有5種基本資料型別:Undefined、Null、Bollean、Number、String;以及一種複雜資料型別:Object。其中,Object本質上是由一組無序的鍵值對組成。

Undefined型別只有一個值,在使用var宣告變數但未對其加以初始化時,就是undefined。

Null型別也算只有一個值的資料型別,其值為null;null值表示一個空指標物件,使用typeof操作符檢測null值時會返回“object”

各資料型別的Boolean值轉換規則

資料型別                                         true                                                                    false

String                                        任何非空字串                                                        空字串

Number                                     任何非零數字值                                             0和NaN(Not a Number)

Object                                          任何物件                                                                  null

Undefined                                     不適用                                                               undefined

浮點值計算會產生舍入誤差,例如0.1+0.2=0.30000000000000004;

NaN有兩個特點:任何涉及NaN的操作都會返回NaN;

                            NaN與任何值都不相等,包括自身

isNaN()函式,確定接收的引數是否“不是數值”。isNaN("10")返回false,isNaN(true)返回false;

數值轉換函式:Number()、parseInt()、parseFloat()

Number()可用於任何資料型別,對於Boolean值,返回1或0;對於null值,返回0;對於undefined,返回NaN。

parseInt("1234blue")  // 1234

parseInt("")  // 0

parseInt("22.5")  // 22

parseFloat()解析到遇到一個無效的浮點數字字元為止。