任何的程式語言都有自己的語言核心,和眾多程式語言一樣,JavaScript也有自己語言的核心。語言的核心部分一般稱為JavaScript最為基礎的部分。正所謂萬事起頭難,學習JavaScript也是一個道理,也有句古話說得好,好的開始是成功的一半。了解並學好JavaScript的語言核心部分是JavaScript學習道路上非常好的開始。
以下是一段程式碼,主要介紹了JavaScript的資料型別與變數:
//在script標籤中,所有//後面的內容都稱之為註釋
//註釋的作用一般都是為一段JavaScript進行一些解釋,讓其他Web前端開發工程師或是閱讀這段程式碼的時候更清楚明了
//變數是一個值的符號名字,透過這些變數的名字,我們也能夠大體的知道這個變數是乾什麼用的,屬於是什麼變數類型
//區別變數很簡單。變數的前面都有「var」 ,也就是說變數是透過「var」來宣告的。
var m; //宣告一個變數m
//一般我們把要宣告的值用等號賦給變數
var m = 10; //現在的變數m等於10
m //透過變數m 來取得剛才宣告的值
//alert(m) //利用alert()函數,在瀏覽器中出彈出m的值
//JavaScript的資料型態:布林值,數字,字串,underfind,函數,數組,物件
var n = 1; //數字
n = 0.01 //整數和實數都是數字類型
var s = "你好"; //由雙引號內的文本構成的字符串
s = '國安'; //由單引號內的文本構成的字串
var b = false; //錯誤的布林值
b = true; //正確的布林值
var z = null; //一個null的空值,是特殊的類型,typeof後面是物件
var u; //underfind
var j = { //一個代表json的物件
li :3, //屬性「li」的值是3
meng :4 //屬性「meng」的值是4
}
j["li"] //透過[]存取json中的值
j.li //透過.存取json中的值
j.long = 5 //透過賦值的方法建立新的屬性
j.ai = { //透過賦值可以建立新的json
xin : 33
}
j.kong = {} //{}代表空對象,它沒有屬性
j.ai.xin //透過.存取新的json中的屬性
var a = [2,3,2] //一個代表數組的物件
a[0] //數組中[]代表[]中數字代表位置,數組從0開始,所以a[0]是數組的第一個元素
a.length //length代表數組a的個數,3
a[a.length-1] //代表數組中的最後一個元素
a[9] = 2; //用賦值的方法加入新的元素
//若a = [],那麼代表陣列裡的元素為零個,a.length = 0
a[0] = {
li : 333
}
//json中能包含數組,數組中也能包含json
/ /alert(a[0]["li"])
上面的程式碼中,可以透過「[]」、「{}」、「.」定義對象,也可以透過「[ ]」、「{}」、「.」開啟更改陣列或物件中的內容。也可以透過「[]」、「{}」、「.」來讀取物件中的一些資料。下面一組程式碼是有關運算子的:
//JavaScript中可以運用預算符,進行兩個數字之間的運算,可以產生新的值
//下面是比較常見的一些預算符,如" "、"-" 、"*"、"/"
//1、介紹運算子
10 10 //加法,20
10 * 10 //乘法,100
10 - 10 //減法,0
10 /10 //除法,1
var j = { //一個代表json的物件
li :3, //屬性「li」的值是3
meng :4 //屬性「meng」的值是4
}
j["li"] - j.meng //json j中的屬性li 減去json j中的屬性meng ,結果是-1
"10" "10" //加法可以進行字串的拼接,結果是100
//2、JavaScript中定義了一些簡寫的運算子
var num = 0 //定義一個數字
num ; //代表自增,num = num 1;
num--; //代表自減,相當於num = num - 1;
num = 2; //代表自增2 ,相當於num = num 2;
num *= 8; //代表自稱8 ,相當於num = num * 8;
//3、運算子進行判斷
var a = 1,b = 2; //一個等號代表複製,兩個變數之間用","隔開,代表同時宣告
a == b; //結果是false 意思是a和b是相等嗎
a != b; //結果是true 意思是a和b不相等嗎
a a a > b; //結果是false 意思是a大於b嗎
a >= b; //結果是false 意思是a大於或等於b嗎
"two" == "three"; //true "tw"在字母中的索引大於"th"
false > (a > b) //結果是true 意思是false和false比較
//4、邏輯運算子
(a == 2) && (b == 3) //結果是true。 a是等於2 且 b是等於3 的嗎 。 &&代表且的意思
a > 2 || b > 2 //結果true ,第一個是false,第二個是true,由於|| 代表或的意思
!(a == b) //結果是true 。 ! 是 求反 的意思
運算子中,僅僅算出個值並不影響任何操作的都叫做表達式,並不會改變程式的運作狀態。而語句是不包含一個值,但是它會改變運行狀態。語句由於改變運行狀態,所以後面加分號。
每個函數都有自己的名字,透過名字可以呼叫執行某一個函數,可以定義一次,呼叫多次。下面是簡單的函數小例子。
//1、函數是一段帶有參數的JavaScript程式碼端,可以一次定義,多次調用,也可以帶有參數
var a = 3; //宣告一個值為3的變數a;
function fn1 (n) { //一個參數為n名為fn1的函數
return n 1; //傳回一個比傳入的值大一的值
}
fn1(a) //結果是4,由於剛才宣告的a的值為3,所以呼叫函數時候,執行a 1 也就是3 1
var fOne = function(m) { //函數也是一種資料型,所以也可以把變數賦值成函數
return m*m; //傳回一個數值,進行參數* 參數的運算
}
fOne(a) //結果是9
//2、方法,賦值函數給變數的屬性
var arr = []; //建立新陣列
arr.push(1,2,3); //用push()方法在arr數組裡從後加入元素
arr.reverse(); //用reverse()方法將數組中的元素順序反轉
var points = [ //宣告一個元素中是json的陣列
{a : 0,b : 0},
{a : 1,b : 1}
]
points.dist = function () { //在宣告的陣列中定義計算兩點之間距離的方法
var p1 = this[0]; //用this取得目前數組的引用
var p2 = this[1]; //並且賦值給兩個新的變數
var a = p2.a - p1.a; //x軸上的距離
var b = p2.b - p1.b; //y軸上的距離
return Math.sqrt(a*a b*b) //用Math()中的sqrt()計算平方根從而得到兩點之間的距離
}
alert(points.dist()) //結果是1.414
//3、控制語句
//條件語句和循環語句稱為控制語句
function abs (m) { //求絕對值函數
if (m >= 0) { //若比較結果為true
return m; //回傳m
}else { //若比較結果為false
return -m; //回傳-m
}
}
function factorial (n) { //計算階乘的函數
var num = 1; //宣告一個值為1的變數
while (n > 1) { //當()內的表達式為true時候,執行迴圈{}內的程式碼
num *= n; //相當於num = num * n
n--; //相當於n = n -1
}
return num //回傳階乘的結果
}
factorial(4) //結果是24
function factorialFor (n) { //用for迴圈實作階乘
var i, num = 1; //宣告變數i,且宣告值為1的變數num
for (i=2; i num *= i; //循環體,當循環體中只有一句話的時候可以省略{}
}
return num; //回傳計算好的階乘表
}
factorialFor(5)
.從函數範例可以看出,不管是while迴圈還是for循環,不管是判斷語句還是循環語句,都算是控制語句。透過一定的條件控制將要發生的事情。
介紹完函數,接下來介紹簡單介紹一下物件導向。
//定義一個建構函數,就是先創造一個初始化函數的物件
function Point (x,y) { //建構函式名稱的第一個字母要大寫
this.x = x; //this代表的就是這個初始化物件
this .y = y; //將函數的參數存到這個初始化物件的屬性
} //建構函式中不需要傳回,return什麼東西
//使用new關鍵字,和建構函數,建立一個新的物件
var p = new Point(1,1); //建立一個平面座標為(1,1)的點
//透過給建構函數原型賦值,來為Point新建立的物件加入方法
Point.prototype.r = function () {
return Math.sqrt(
this.x*this.x this.y*this.y
); //利用Math中的sqrt()方法進行開平方根運算。 this指涉的是呼叫方法的物件
}
p.r() //結果是1.414
上面的例子是教大家如何定義一個有求大家平方根方法的點。 JavaScript的物件導向和其他程式語言的物件導向有一些差異。具體的差別呢,我們只能繼續往下研究,才能知道。