1. 程式人生 > >JavaScript入門——變數,值型別,運算子,語句——day one

JavaScript入門——變數,值型別,運算子,語句——day one

目錄

一、瀏覽器

1、變數

值型別

引用型別

型別轉換

3、運算子

算術運算子

關係運算符

邏輯運算子

4、語句

條件語句

迴圈語句

跳轉語句

一、瀏覽器

瀏覽器的組成:shell部分(可視部分)

                         核心部分(渲染引擎,JS引擎,其它部分)

主流瀏覽器及核心:

二、JS基本語法:

js引入方式:外部js檔案和內部js。不能同時外部JS又內部js。同時引用內部js會失效。

基本語法規則:

每條語句以分號(;)結尾。

+ - = / 等符號兩邊必須有空格。

JS語法錯誤(語法解析錯誤,邏輯錯誤)會引發後續程式碼終止,但不會影響其他JS程式碼塊。

1、變數

用來儲存資料的記憶體。宣告,賦值兩步。

var單一變數。

命名規則:

1.可以包含英文字母、數字、_、$;

2.開頭只能是英文字母、_、$;

3.不能包含關鍵字(如var有特殊語法含義)或保留字(如package 將來版本中可能作為關鍵字)。

2、變數型別

值型別

字串(string)、數值(number)、布林值(boolean,true/false)、none、undefined

佔用空間固定,儲存在棧中

引用型別

物件(Object)、陣列(Array)、函式(Function)

佔用空間不固定,儲存在堆中

型別轉換

強制轉換

a=number(a);//將原來的字串a轉換成number型別 
var a ="123.abc";a = parseInt(a);a=123 如果第一個是數字,就繼續解析直至字串完畢或者遇到非數字符號為止
a = a.toString();直接呼叫.toString方法可以將內容直接轉成字串

隱式轉換

不通過程式猿去寫固定程式碼,瀏覽器可以直接進行轉換

var b = 100;if(b){} // 把數字轉換為true

typeof

typeof 運算子把型別資訊當作字串返回。

typeof 返回值有六種可能: "number," "string," "boolean," "object," "function," 和 "undefined."

用typeof來獲取一個變數是否存在

如if(typeof a!="undefined"){},而不要去使用if(a)因為如果a不存在(未宣告)則會出錯

對於Array,Null等特殊物件使用typeof一律返回object,這正是typeof的侷限性。

3、運算子

優先順序:

算術運算子 > 關係運算符 > 邏輯運算子

算術運算子

①  “+”

   1.數學運算,字串連線

    2.資料型別加字串都等於字串

② “/”

    1/0結果為infinity(正無窮)   -1/0結果為-infinity(負無窮)  0/0 結果為NAN (not a number不是一個數)

③   “-”、“*”、“%”(摩爾,取餘)、“=”(優先順序最低)、“()”(括號優先順序最高)

④   “a+=10” 

      a=a+10的簡寫

⑤  “a++” 

     先執行當前所在語句,再a+1賦值給a,再執行下一條語句。“a--”同理

⑥  “++a” 

      先把a+1賦值給a,再執行當前所在語句。b=--a+--a;最後b的值為-1,因為每次--a都是在當前改變了的a基礎上。

關係運算符

 <    <=    >     >=    ==    !=    ===      字串比較大小比較的就是ascl碼順序。

邏輯運算子

(&&與、||或、!非)優先順序是:!、&& 、||  。

4、語句

條件語句

通過判斷表示式的值來決定執行還是跳過某些語句,包括if語句和switch語句。

if語句  

條件必須放在if後面的圓括號內,條件的求值結果永遠是一個布林值,即只能是true或false。

if(1>2){
    alert('1');
}

如果if語句中的花括號部分只包含一條語句,可以不使用花括號。但因為花括號可以提高指令碼的可讀性,所以在if語句中總是使用花括號是個好習慣。

if(n == 1){
    //程式碼1
}else if(n == 2){
    //程式碼2
}else if(n == 3){
    //程式碼3
}else{
    //其他程式碼
}

可以用if語句的巢狀形式來完成在語法上等價的程式碼,但沒有else if語句清晰

if(n == 1){
    //程式碼1
}else{
    if(n == 2){
        //程式碼2
    }else{
        if(n == 3){
            //程式碼3
        }else{
           //其他程式碼
        }
    }
}

switch語句

當所有的分支都依賴於同一個表示式的值時,else if並不是最佳解決方案。在這種情況下,重複計算多條if語句中的條件表示式是非常浪費的做法,而switch語句正適合處理這種情況。不一定為123,case後面可以為ture,"a"等等,只有滿足就執行case下面的程式碼。

//等價於
switch(n){
    case 1:
        //程式碼1
        break;
    case 2:
        //程式碼2
        break;
    case 3:
        //程式碼3
        break;
    default:
        //程式碼4
}

迴圈語句

條件語句把javascript中的程式碼變成一條條的分支路徑,而迴圈語句(looping statement)就是程式路徑的一個迴路,可以讓一部分程式碼重複執行

4種迴圈語句:while、do/while、for、for/in

while語句

滿足條件再執行迴圈體

使用while(true)會建立一個死迴圈

var count = 0;
while(count < 10){
    console.log(count);
    count++;
}

do while語句

先迴圈,再判斷條件,在計算表示式之前,至少會執行迴圈主體一次。

要用分號結尾

 do{
        console.log(a[i]);
        }while(++i<len);

for語句

大部分的for迴圈都具有特定的計數器變數,計數器的三個關鍵操作是初始化、檢測和更新。

var count = 10;
var i;
for(i = 0; i < count; i++){
    console.log(i);
}

如果迴圈中的一次迭代會改變多個變數,則需要用到逗號運算子,它將初始化表示式和自增表示式合併入一個表示式中以用於for迴圈

for(i = 0,j =10; i<10; i++,j--) sum+= i*j;
for(;;)或者for(i = 0; ; i++)是死迴圈。

跳轉語句

三種:break、continue和return

break語句

單獨使用break語句的作用是立即退出最內層的迴圈或switch語句

break語句只有出現在迴圈語句或switch語句中才合法,出現在其他語句中會報錯

continue語句

不是退出迴圈,而是轉而執行下一次迴圈

只能在迴圈體內使用。在其他地方使用將會報語法錯誤

//1 3 5
var i = 0;
while(i<5){
    i++;    
    if(i % 2 === 0)continue;
    console.log(i);
}

return語句

函式呼叫是一種表示式,而所有表示式都有值。函式中的return語句就是指定函式呼叫後的返回值

只能出現在函式體內,如果不是會報語法錯誤。當執行到return語句時,函式終止執行

function square(x)
{    
    return x*x
};
square(2);