標籤:優先 範圍 none 之間 拼接 集合 注意 運算式 同名
本文內容:
- javascript的變數
- javascript的資料類型
- javascript的運算子
- javascript的流程結構
首發日期:2018-05-09
javascript的變數
建立變數:
全域變數:全域變數是在js代碼的各個地方都能調用的變數
- 【不在{}內時】var 變數名 = 值;
- 【不論在不在{}內】 變數名 = 值;
局部變數:局部變數是僅僅在函數體內生效的變數
- 【在{}內】var 變數名 = 值;
- 【函數的參數變數也是一種局部變數】
範圍:
- 函數體內,同名的變數,局部變數優先順序高於全域變數
- 局部變數在函數外無法調用;
- 嵌套函數中,外層函數無法調用內層函數的局部變數,記憶體函數可以調用外層函數的局部變數
補充:
- 變數的範圍是一個大坑,還有什麼範圍鏈問題、生命週期問題【比如,函數名跟某一個變數同名時的優先順序也是一個不一般的問題】。使用要注意。由於這裡是一個簡單的記錄,所以不記錄那麼複雜的東西。
javascript的資料類型
- javascript是動態類型的語言,它統一使用var來聲明每一個對象,每一個對象的資料決定它是一個什麼樣的資料類型。
- 所以下面主要介紹資料類型跟變數的關係
數值型:
- number:普通的數字,可以有用八、十、十六等進位來表示,可以是浮點數。
字元型:
布爾型:
- boolean:有兩個值,一個是true,一個是false;
引用型:
- undefined:聲明了變數,但未進行賦值初始化的變數。
- object:表明變數是一個對象;當變數賦值null時代表是一個Null 物件.
<!DOCTYPE html><html><head> <meta charset="UTF-8" /> <title>Document</title> <script> function f1(){ var test=6;//Number var a="7";//String var b=true; var c; var d=null; var e={‘name‘:"lilei"}; console.log(typeof(test));//number console.log(typeof(a));//string console.log(typeof(b));//boolean console.log(typeof(c));//undefined console.log(typeof(d));//object console.log(typeof(e));//object } </script></head><body> <input type="button" value="點擊" onclick="f1()"></body></html>
補充:
- 字串的轉義問題:在字串中可以有些字元具有特定的意義,比如\n顯示到網頁中時會變成分行符號。如果想要“不使用那個特別的意義”,需要在這些特別的字元前面加\
- typeof(變數名)可以返回變數的資料類型。
javascript的運算子
算數運算子:
- +加法運算子
- 加法運算子除了數值相加的功能外,還可以拼接字串,比如"a"+"b"結果是"ab",7+"a"結果是"7a"。
- -減法運算子
- *乘法運算子
- /除法運算子
- %求餘運算子
- +=加法賦值運算子、-=減法賦值運算子、*=乘法賦值運算子、/=除法賦值運算子、%=求餘賦值運算子
自增、自減運算子:
- ++:自增運算子,在自己數值的基礎上進行加一
- --:自減運算子,在自己數值的基礎上進行減一
- 自增、自減運算子可以位於變數之前【先自增,再取值】,也可以位於變數之後【先取值,再自增】,
關係運算子:
- <= :不大於運算子,比如a <= b,如果a不大於b,那麼返回true,否則返回false
- < : 小於運算子
- > :大於運算子
- >= :不小於運算子
- == :等於運算子
- !== :不等於運算子
- 比較規則:
- 數值之間:直接比較數值大小
- 一個是數值:把另一個轉換成數值
- 字串之間:比較它們之間的unicode數值大小
- 字串與非數值:把非數值轉成字串
- 其他。。。
邏輯運算子:
- ! :邏輯非運算,把結果取反,返回結果是布爾值,
- && :邏輯與運算,返回結果是布爾值,
- || :邏輯或運算,返回結果是布爾值
位元運算符:
- ~:按位非
- &按位與
- |按位或
- ^按位異或
- <<位左移運算
- >>帶符號右移運算
- >>>無符號右移運算
其他運算子:
- ?: :這是一個三目運算子,運算式 (expr1) ? (expr2) : (expr3)。在 expr1 求值為 TRUE 時的值為 expr2,在 expr1 求值為 FALSE 時的值為 expr3。
javascript的流程結構
迴圈結構:
- while結構
- do-while結構
- do{迴圈執行程式碼片段}while(條件運算式);
-
- do-while迴圈不管初始條件是否成立都會執行一次
- for結構
- for (迴圈變數=初值;迴圈條件;計數器){迴圈執行程式碼片段}
- for-each結構
- for (迴圈變數 in 集合){迴圈執行程式碼片段}
選擇結構
- if
- if(條件運算式1){條件運算式1為真時執行的代碼}else if(條件表示2){條件運算式2為真時執行的代碼}else{前面的條件都不符合時執行的代碼}
-
- else if 和else是可選的
- switch
- switch(值){ case 值1:程式碼片段;break;case 值2:程式碼片段;break;case 值3:程式碼片段;break;……default:程式碼片段;}
結束語句:
- return:結束return 所在函數體的運行。並返回return 後面跟著的值。
- break:結束break所在的迴圈。break也可以在switch用來跳出選擇,沒有break時會向下執行另外一個case。
- continue:在continue的位置提前結束本次迴圈,然後執行下一次迴圈判斷。
【粗糙版】javascript的變數、資料類型、運算子、流程結構