JavaScript之資料型別與變數
4.1 資料型別和變數
資料型別實際上就是資料的一種描述,任何一門程式語言都可以處理多種型別的資料,只是有的是強型別(Java) ,有的弱型別的(JavaScipt)。
JavaScipt資料型別有三種:
1、基本資料型別
JS中基本資料型別主要由3種組成:數值資料型別、文字資料型別、布林資料型別
2、複合資料型別
JS中複合資料型別主要包括用來儲存一組或者不同資料型別資料的陣列,用來儲存JS碼塊的被反覆呼叫的函式,用來儲存陣列和函式的物件
3、特殊資料型別
特殊資料型別:沒有值存在的空資料型別null,沒有進行任何定義的無定義資料型別undefined
4.1.1 基本資料型別
4.1.1.1 數值資料型別
數值資料型別,就是指數字。例:1,2,3......。在JS中沒有整數和浮點數的說法。
無論什麼樣的數字,都是數字。並且數值資料型別取值範圍:-10的308次方到10的308次方
當取值超過10的308次方,也就是無窮大,無窮大在JS中使用Infinity表示。當取值超出了-10的308次方,也就是無窮小,無窮小在JS中使用-Infinity表示。如果在JS中,數值計算錯誤將成返回NaN (Not a Number ),NaN是一個特殊的數值,也是屬於數值型。
4.1.1.2 字串資料型別
字串型別是指由” ”或者’ ’括起來的內容,內容可以由0-N個字元組成。它可以是大小字母,也可以是數字、標點符號或者一些其他的特殊字元,當然也包括漢字。
比如:
"hello word"解釋後結果為:hello word
""解釋後結果:為不包含任何內容的空字串
" "解釋後結果為:由空格組成的字串
在使用字串資料型別的時候,需要注意:
a)字串必須要使用雙引號或者單引號包含起來,並且符號必須成對的
b)空字串是指沒有任何內容的字串,不是包含空格的字串
c)所有的引號都必須是在英文輸入法狀態下輸入的
d)通過轉義字元“\”來在字串中新增不可顯示的特殊字元,或者比如:
轉義序列 |
字元 |
\b |
退格 |
\f |
走紙換頁 |
\n |
換行 |
\r |
回車 |
\t |
橫向跳格 (Ctrl-I) |
\' |
單引號 |
\" |
雙引號 |
\\ |
反斜槓 |
4.1.1.3 布林資料型別
布林資料型別值,主要用於邏輯判斷,它只有2個值:true和false,分別表示真或者。
例外,需要注意的是:在JS中,我們還可以使用非0和0表示真假。0表示假,非0表示真。
4.1.2 複合資料型別
4.1.2.1 陣列
Java的陣列只能存放相同資料型別的資料,而在JS中資料可以存放不同資料型別的資料
4.1.2.2 函式
函式(Java中的方法)主要用來儲存一段JS程式碼,從而做到這段程式碼可以被無限重複
4.1.2.3 物件
用來存放陣列和函式的物件,就是這裡的物件
4.1.3 特殊資料型別
4.1.3.1 無定義資料型別(undefined)
undefined的意思是"未定義的" ,表示你現在用的變數沒有定義過,通常只有JS程式碼才會返回。以下三種情況可能會出現:
a)引用一個曾經定義過,但是沒有賦初值的變數
b)引用一個不存在的陣列元素
c)引入一個不存在的物件屬性
undefined是一個返回值,JS中還可以把這個值拿去和其他資料型別做個比較,比如:
if(str == undefined){}
4.1.3.2 空資料型別
Null 就表示"空" ,表示沒有值存在。Null不能與任何資料型別的資料進行比較。
4.1.4 變數
變數,顧名思義,就是指在程式執行過程中可變的量。變數是儲存資訊的單元,它對應記憶體中某些區域。變數名就代表了那片儲存區域。JS是一種弱型別的程式設計語言,也就是說變數可以不宣告直接使用,所謂的宣告變數就是指給變數指定一個名稱,宣告變數後,就可以它作為儲存單元。
4.1.4.1 變數定義
JS使用關鍵字var宣告變數,該關鍵字之後的字串就是變數名,語法格式為:
var 變數名=變數值;
當然JS同樣也支援1次性定義多個變數名。多個變數名之間採用逗號","分割,比如:
var userName,pasword,age,gender;
然後在對這些變數進行賦值
在JS中,var可以省略掉,但是在用時,一定要賦值,如:
userName="李四";
4.1.4.2 變數賦值
JAVA中給變數賦值,採用"="賦值雲演算法,在JS中一樣,例如:
var userName;
userName="李四";
強烈要求:必須給每一個定義出來的變數賦初值
4.1.4.3 變數作用範圍
所謂的變數作用範圍,就是指可以使用該變數的程式碼區域,Java中有全域性變數和區域性的說法,JS中同樣也存在。
全域性變數:可以在整個HTML文件範圍都可以使用的變數,這種變數需要定義在函式之外。
區域性變數:只能在函式內部區域性使用的變數,通常這種變數都定義在函式內部,所只有函式體才可以訪問。
4.1.5 識別符號
JS編寫程式碼,跟JAVA編寫程式碼一樣,也同樣存在很多地方都需要定義名稱,例如:JS中變數名,JS中函式名......,定義這些名稱時,可以使用的字串序列就被稱之為識別符號。
- 識別符號由字母、數字、下劃線和美元符號組成,但是不能包括空格、標點符號、運算子.....
- 識別符號不能以數字開頭
- 識別符號不能與關鍵字同名,例如: if、else、funtion、switch......
- 見名知意
- 遵從一些軟性規則,比如大駝峰、小駝峰......
請參考java識別符號命名規範
4.1.6 關鍵字
關鍵字,就是某一個程式語言中具有特殊含義的識別符號。一般這個識別符號,我們程式設計師只有使用的權利,沒有重新定義的權利,在定義變數、函式、陣列等資料型別的名稱時,我們都不能使用它們。
Javascript 的保留關鍵字不可以用作變數、標籤或者函式名。有些保留關鍵字是作為 Javascript 以後擴充套件使用。
bstract |
arguments |
boolean |
break |
byte |
case |
catch |
char |
class* |
const |
continue |
debugger |
default |
delete |
do |
double |
else |
enum* |
eval |
export* |
extends* |
false |
final |
finally |
float |
for |
function |
goto |
if |
implements |
import* |
in |
instanceof |
int |
interface |
let |
long |
native |
new |
null |
package |
private |
protected |
public |
return |
short |
static |
super* |
switch |
synchronized |
this |
throw |
throws |
transient |
true |
try |
typeof |
var |
void |
volatile |
while |
with |
yield |
4.1.7 運算子和表示式
運算子可以說我們每一種程式語言中,必不可少的一個基本元素,因為我們在程式流程或者程式資料處理的過程,需要使用到它。運算子就是用來操作資料的符號,運算元就是被運算子操作的資料。
JS中,運算子如果按照運算元的個數來劃分:一元運算子、二元運算子、三元運算子
如果按照功能來劃分:賦值運算子、算術運算子、關係運算符、位操作運算子、邏輯運算子、條件運算子、特殊運算子
4.1.7.1 算數運算子
它是所有運算子中最簡單的。JS中提供的算術運算子有:(+,-,*,/ ,%,++,--)其中的前5個,都是二元運算子。後2個,則是一元運算子。
進行加法運算時,存在字串運算,那麼數值型別變為字串進行拼接
比如:
var str="hello"+12;
//得到結果為:hello12
4.1.7.2 賦值運算子
由賦值運算子和運算元組成的表示式,被稱為賦值表示式。賦值表示式的功能是將右側計算後的結果賦值給左側的變數。
運算子 |
例子 |
等同於 |
= |
x=y |
|
+= |
x+=y |
x=x+y |
-= |
x-=y |
x=x-y |
*= |
x*=y |
x=x*y |
/= |
x/=y |
x=x/y |
%= |
x%=y |
x=x%y |
賦值表示式,一定是先計算右側的程式碼,然後在賦值給左側
比如:
var x = 5;
x += 5;
//得到x等於10;
//等同於下面的程式碼
var x = 5;
x = x+5;
4.1.7.3 關係運算符
關係運算符實際上是邏輯運算子的一種,可以把它理解為是一種判斷,而判斷的結果 ,要麼是"真" ,要麼是"假"
JS中關係運算符: == != < > <= >= 一共6種
注意:=是賦值運算子,==是關係運算符
4.1.7.4 位操作運算子
位運算子是將數劇按照二進位制位的方式來進行運算的一種符號, JS中的位運算子有:
& (與) |(或) ^(異或) ~取反 <<左移 >>右移
& (與) |
先轉為二進位制進行運算,同為1才為1 |
|(或) |
先轉為二進位制進行運算,有1就為1 |
^(異或) |
先轉為二進位制進行運算,同1同0為0,不同為1 |
~取反 |
先轉為二進位制進行運算,取反,得到取反後的補碼,對補碼-1取反得到原碼 |
<<左移 |
先轉為二進位制進行運算,向左移動,左邊超出部分去掉,右邊部分用0補全 |
>>右移 |
先轉為二進位制進行運算,向右移動,右邊超出部分去掉,左邊部分用0補全 |
4.1.7.5 邏輯運算子
JS中的邏輯運算子&&、|| 、! 分別是:邏輯與、邏輯或、邏輯非。邏輯運算子要求運算元只能是布林型的資料,邏輯與、邏輯或都是二元運算子,而邏輯非是一元運算子。
邏輯與(短路與) :同為真,才為真;
邏輯或(短路或) :只要有1個為真,便為真邏輯;
非:非真既假,非假既真
4.1.7.6 其他運算子
a)三目運算子
語法:
條件表示式?表示式1:表示式2
按照條件表示式執行,如果執行結果為“真" ,則執行表示式1的內容;否則,執行表示式2的內容
b)運算子的優先順序
1、() 執行順序:從左到右
2、++/-- 執行順序,從右到左(這裡分前加加/減減,後加加/減減)
//比如下面這寫程式碼
var x=5;
y=x++;//這裡是後加加,先用後加,那麼就先賦值,y就等於5,賦值之後x等於6
//現在x等於6
y=++x;//這裡是前加加,先加後用,那麼先進行加法運算,則x等於7,在進行賦值,y等於7
3、/ * % 執行順序:從左到右
4、+ - 執行順序:從左到右
5、< > <= >= 執行順序:從左到右
6、== != 執行順序:從左到右
7、&& || 執行順序:從左到右
8、= += -= *= /+ %= 執行順序:從右到左推薦
推薦:寫表示式的時候,如果無法確定運算子的先後順序,就多使用()