變量:
變量的含義:就是用于表示一個數據的代號——我們自己定義的一個名字。
變量的定義:var v1; var v2 = 2; var v3, v4, v5; var v6, v7=7, v8, v9=”abc”;
變量的使用:
賦值:v1 = 1; v1 = 1+2+3; v1 = v2 + “abc”; v1 = v1 + 5; v1 = v1 + v1;
取值:m1 = v1; //將v1的值取到,再賦值給m1
m2 = v1 + 5; //將v1的值取到,再跟5相加,然后賦值給m2
alert( v1 ); //將v1的值取到,并交給alert去“彈出”
document.write( v1 ); //將v1的值取到,并交給document.write去“輸出”
alert( “v1=” + v1); //取到v1的值,并和字符串“v1=”進行連接運算,然后結果被alert。
document.write( “v1=” + v1);
數據類型:
基本類型:
布爾類型: boolean; 這種類型只有兩個值可用: true, false
字符串類型: string; 可以用單引號或雙引號表示,含義相同;
數字類型: number
復合類型:
數組: Array,
對象: Object
特殊類型:
null:空類型——可以給一個變量明確賦值為“null”,這就是空值,也是空類型,只是表示一個“含義”:該變量沒有給有效值。
undefined: 未定義:此類型通常就是對應“根本就還沒有給值”這種狀態。
算術運算符:?。 。 。 。 。?/p>
注意點:
1, 除法(/)就是數學上的自然除,而不是C語言的除法含義。
2, ++ 和 -- 稱為一元運算符,即只針對一個變量進行運算
3, 但 ++ 和 – 可以在表達式(比如賦值語句)中使用,則類似同時進行了2件事:自加(或自減)和表達式本身的計算,此時他們放在變量的前面和后面有不同含義。
a) var i = 1; var s1 = i++; //結果是:s1為1,i為2
b) var i = 1; var s2 = ++i; //結果是:s2為2,i為2
比較運算符:> >= < <= == != === !==
比較運算符用于數據的大小比較,通常是數字。其中值得注意的是:
==被稱為“模糊相等”,即數據的內容或經過轉換后的內容相等,就認為是相等。
===稱為“嚴格相等”,只有數據的類型和數據的內容都相等的時候才算是相等。
——從計算機的角度來說,一個數據具有兩個方面:數據類型和數據值(數據內容)
邏輯運算符:只用于對bool值進行運算。
邏輯與( && ):兩個數據只有都是true的時候,結果才是true
邏輯或( || ):兩個數據只要有一個是true,結果就是true
邏輯非( ! ):獲取一個bool值的“相反值”
字符串運算符:
只有一個連接運算符( + ): 含義是“連接兩個字符串”
辨析算術運算符的加法( + ):
此加號( + )兩個的數據只要有一個是字符串,則都會按字符串的“連接”含義進行運算,另一如果不是字符串,則會自動轉換為字符串后再進行連接運算。
位運算符:位運算符只針對數字的二進制形式進行。
var v1 = 5; //這是10進制,二進制其實是:101,在計算機內部其實類似這樣: 00000101
var v2 = 6; //這是10進制,二進制其實是:110,在計算機內部其實類似這樣: 00000110
按位與:
符號: &
含義:將兩個二進制數字的對應位上的數字進行“與運算”,結果還是這些位運算的結果組成的二進制數所代表的值。
解釋:二進制數字進行“與運算”的規則是:
1 & 1 è 1
1 & 0 è 0
0 & 1 è 0
0 & 0 è 0
舉例:
var v1 = 5, v2 = 6,運算圖示為:
v1=5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
v2=6 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
v1 & v2 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
var v3 = v1 & v2 = 00000100(2) = 4(10)
按位或:
符號: |
含義:將兩個二進制數字的對應位上的數字進行“或運算”,結果是這些位運算的結果組成的二進制數所代表的值。
解釋:二進制數字進行“或運算”的規則是:
1 | 1 è 1
1 | 0 è 1
0 | 1 è 1
0 | 0 è 0
按位非:
符號: ~ //這是一個“單目運算符”
含義:將一個二進制數字的對應位上的數字進行“非運算”,結果是這些二進制數字所代表的值。
解釋:二進制數字進行“非運算”的規則是:
~1 è 0
~0 è 1
按位左移運算:
符號: <<
含義: 將一個二進制數的每一個位上的數字往左邊移動指定的位數,并且左邊“冒”出去的就不管了(不算了),右邊空出來的位上填入“0”,得到的結果就是該二進制數字所代表的值。
舉例:
var v1 = 5;var v2 = 5 << 2; 運算圖示為:
v1=5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
v2= 5 << 2 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
var v2 = 5 << 2 = 00010100(2) = 1 * 24 + 1*22 = 16+4 = 20(10)
按位左移運算:
符號: >>
含義: 將一個二進制數的每一個位上的數字往右邊移動指定的位數,并且右邊“冒”出去的就不管了(不算了),左邊空出來的位上填入原來的左邊的數字,得到的結果就是該二進制數字所代表的值。
舉例:
var v1 = 5;var v2 = 5 >> 2; 運算圖示為:
v1=5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
v2= 5 >> 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
var v2 = 5 >> 2 = 00000001(2) = 1(10)
運算符其他內容:賦值運算符:其實就一個基本的賦值運算符: = ,其含義是將等號右邊的數據放到等號左邊的變量中去。
錯誤的語法:
var v1 = 1, v2 = 2, v3 = 5, v4 = -2;
v1 + v2 = v3 + v4; //錯,大錯,大錯特錯
復合賦值運算符: += -= *= /= %=
運算符的優先級 —— 太多,較為復雜,記不住,但請記住一下幾條規則:
1, 要心如明鏡:運算符有優先級(先后順序)問題。
2, 括號最優先,等號(賦值)最落后。
3, 先乘除后加減
4, 想不清楚或用不明白的,使用括號來解決
5, 括號只有小括號,可以一層層嵌套。
舉例:
var year = 2013;
//判斷閏年:一個年份能被4整除并且不能被100整除是閏年,或者能被400整除,也是閏年。
if ( ( (year % 4 == 0) && (year % 100 != 0) ) || (year % 400 == 0) )
{ documment.write( year + “是閏年”) ;}
數據的傳值方式:var v1 = 10;
var v2 = v1; //將v1中值拷貝一份,放到v2這個變量中去了——此時也可以說成“將v1的值傳遞給v2”
var v1 = v1 + v1; //v1的值改變了,但并不影響v2——因為v2本身也是一個獨立的變量。
document.write("<br />v1=" + v1); //20
document.write("<br />v2=" + v2); //10, 不會,40,
上述“v2 = v1”就稱為“拷貝傳值”——取得v1的值并拷貝一份,然后賦值給v2
var v3 = {name:"小花", age:18, edu:"大學" }; //這是一個所謂“對象”類型——其中包括了3個數據。
//操作其中的數據類似這樣:
document.write("<br />v3這個對象的年齡為:" + v3.age);
v3.age = 19; //v3這個對象的age這項數據的值重復賦了一個新值,類似前面v1 = 20;
var v4 = v3; //此時,是將v3這個變量的“內存地址”傳遞給v4這個變量,而v3這個對象的數據本身其實只是由該地址來獲取。——這就叫做引用傳值——此時,其實這兩個變量是一樣的數據內容,類似一個人的多個名字:真名,藝名,網名,小名
document.write("<br />v4這個對象的年齡為:" + v4.age);
v3.age = 20; //
document.write("<br />此時,v4這個對象的年齡為:" + v4.age);
總結:
在js中,基本數據類型使用 “拷貝傳值”——傳值的時候直接就出現了一份新的數據(當然同時也是另一個變量所代表)
復合數據類型(數組和對象)使用“引用傳值”——傳值的時候只是做了一個地址指向,數據仍然只有一份,兩個變量就指向這同一份數據。
if分支結構:控制結構:就是使用一定的語法來控制我們程序執行的流程——也可以叫“流程控制結構”
分支就是“多條路徑,走一條”。
最簡形式:
//如果此條件滿足(即條件判斷的結果是tr
新聞熱點
疑難解答