JavaScript入門——變數,值型別,運算子,語句——day one
目錄
一、瀏覽器
瀏覽器的組成: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);