基於RPGMakerMV的JavaScript基礎-2
第一節 基本語法
區分大小寫
JavaScript是區分大小寫的,也就是說,大寫字母和小寫字母會被認為是不同的部分,例如變數名rename,Rename以及RENAME是不同的三個變數,雖然它們看起來含義相同。
空白
大多數情況下,JavaScript是忽略空白部分的,所以你可以使用空格鍵、製表鍵等來縮排程式碼,使其變得好看許多。例如圖2-1中的兩端程式碼,雖然功能是一樣的,但是下面的部分明顯比上面的部分簡潔、清晰。要是隔兩天你再來看,那麼你願意看哪一種呢?
註釋
註釋必須好好寫,註釋必須好好寫,註釋必須好好寫。(重要的事情說三遍)註釋是幫助你理解的一部分文字,並不在程式碼中起作用。
c式的/*與*/,或者c++式的//都可以,其中/*和*/可以跨行註釋其中的所有內容,//只能註釋在它後面的這一行的內容。
圖2-1
分號
分號對於JavaScript雖然不是必要的(事實上直譯器會自動補全),但是這裡推薦你老老實實的每句話後面加分號,否則會出現一些稀奇古怪的事情。
換行
換行用於把兩條語句隔開,以增加可讀性,一樣推薦你老老實實的換行,不要偷懶。另外,不要把一句話拆開兩行。
第二節 JavaScript語句
JavaScript有兩種語句,簡單語句和複合語句。
簡單語句就是看著簡單的,例如
- x=5;
複合語句就是看著很複雜的,包含了多個結構的,例如。
-
if(con==1){
-
x=5;
-
}else{
-
x=8;
- }
事實上這兩者沒什麼本質不同,你也不必要區分的那麼仔細,我也不打算詳細區別這兩個東西。
第三節 JavaScript的保留字
ECMA-262 描述了一組具有特定用途的關鍵字。這些關鍵字可用於表示控制語句的開始或結束,或者用於執行特定操作等。按照規則,關鍵字也是語言保留的,不能用作識別符號。以下就是ECMAScript的全部關鍵字(帶*號上標的是第5 版新增的關鍵字):
- break do instanceof typeof
- case else new var
- catch finally return void
- continue for switch while
- debugger* function this with
- default if throw delete
-
in try
ECMA-262 還描述了另外一組不能用作識別符號的保留字。儘管保留字在這門語言中還沒有任何特定的用途。但它們有可能在將來被用作關鍵字。以下是ECMA-262 第3 版定義的全部保留字:
- abstract enum int short
- boolean export interface static
- byte extends long super
- char final native synchronized
- class float package throws
- const goto private transient
- debugger implements protected volatile
-
double import public
第5 版把在非嚴格模式下執行時的保留字縮減為下列這些:
- class enum extends super
-
const export import
在嚴格模式下,第5 版還對以下保留字施加了限制:
- implements package public interface
- private static let protected
-
yield
總之,這些詞都不要使用做自己的變數名字就好,否則會跟系統預定義的功能起衝突。
第四節 變數和資料型別
變數是儲存資訊的容器。
變數需要起一個變數名。變數名須以字母、 $ 或 _ 符號開頭,而且對大小寫敏感。
建議大家平常都用字母開頭,我個人比較討厭美元和短命鬼。
使用變數前需要宣告這個變數,我們使用var來宣告一個變數,例如:
-
var a=5;
-
var b=10;
-
var c=a+b;
- var pi=3.14;
就像這樣,我們就聲明瞭一系列的變數,並且給他們賦了相應的值。也可以不賦值來宣告一個變數,在後面的使用中再給它賦值,例如:
-
var m;
- m=250;
- 賦值要使用=,叫做賦值號,注意,這東西不是等號,不表示兩個相等,只是把右邊的值給左邊,或者說把左邊的變數設定成和右邊一樣的。
資料型別就是資料的型別。
JavaScript有字串、數字、布林、陣列、物件、Null、Undefined這樣幾種基本資料型別。
而且,JavaScript擁有動態的資料型別,這意味著相同的變數可用作不同的型別,例如,前一刻它還是個數字,後面就變成字串了:
-
var a;//宣告一個變數a
-
a=5;//給a賦值5,此時a是個數字型別
- a="hehe";//給a賦值“hehe”,此時a是個字串型別
字串
一種比較特殊的(我不喜歡特殊……)型別,用引號包裹著的內容來表示。單引號可以,雙引號也可以,例如:
-
var carname="Bill Gates";
- var carname='Bill Gates';
也可以用引號包裹引號,這種字串是裡面有引號的字串,例如:
-
var answer="Nice to meet you!";
-
var answer="He is called 'Bill'";
- var answer='He is called "Bill"';
數字
這就是表示一個數字,沒什麼好說的,例如:
-
var x1=34.00; //使用小數點來寫
- var x2=34; //不使用小數點來寫
還可以用科學計數法,例如:
-
var y=123e5; // 12300000
- var z=123e-5; // 0.00123
布林
布林型別是邏輯運算的,只有兩個值:true和false。
陣列
陣列就是一些變數的順序組合,JavaScript中這樣來建立一個數組:
-
var cars=new Array();
-
cars[0]="Audi";
-
cars[1]="BMW";
- cars[2]="Volvo";
或者 (condensed array):
- var cars=new Array("Audi","BMW","Volvo");
或者 (literal array):
- var cars=["Audi","BMW","Volvo"];
陣列的下表是從0開始的,你可以用[]裡面加數字的形式來訪問數組裡面儲存的資料。
物件
物件由花括號分隔。在括號內部,物件的屬性以名稱和值對的形式 (name : value) 來定義。屬性由逗號分隔:
- var person={firstname:"Bill", lastname:"Gates", id:5566};
上面例子中的物件 (person) 有三個屬性:firstname、lastname 以及 id。
空格和折行無關緊要。宣告可橫跨多行:
-
var person={
-
firstname : "Bill",
-
lastname : "Gates",
-
id : 5566
- };
物件的訪問有兩種形式,一種是使用.來訪問,一種是使用[]來訪問,例如:
-
name=person.lastname;
- name=person["lastname"];
undefined和null
undefined 這個值表示變數不含有值,可以通過將變數的值設定為 null 來清空變數,例如:
-
cars=null;
- person=null;
宣告指定型別的變數時,可以使用new來宣告,例如:
-
var carname=new String;
-
var x= new Number;
-
var y= new Boolean;
-
var cars= new Array;
- var person= new Object;
另外,JavaScript中的所有變數都是物件。
第五節 物件
事實上,JavaScript中所有事物都是物件,物件就是擁有屬性和方法的資料。
屬性和方法
屬性是與物件相關的值,與遊戲人物的屬性類似。
方法是能夠在物件上執行的動作,與遊戲人物的技能類似。
舉例:汽車就是現實生活中的物件。
汽車的屬性:
-
car.name=Fiat
-
car.model=500
-
car.weight=850kg
- car.color=white
汽車的方法:
-
car.start()
-
car.drive()
- car.brake()
同樣,遊戲中的人物也有生命值,攻擊力等屬性,也有攻擊,防禦,放火球等方法。這樣,我們就可以把遊戲中的人物當做一個物件來設計。
當你像這樣宣告一個 JavaScript 變數時:
- var txt = "Hello";
你實際上已經建立了一個 JavaScript 字串物件。字串物件擁有已經按標準定義好的屬性 length。對於上面的字串來說,length 的值是 5。字串物件同時擁有若干個內建的方法。
屬性:
- txt.length=5
方法:
-
txt.indexOf()
-
txt.replace()
- txt.search()
除了使用JavaScript內建的幾種物件外,我們還可以自己定製自己的物件,例如剛才說到的遊戲人物,就可以像這樣定義:
-
var person=new Object();
-
person.name="Xiao Rou"
-
person.hp=500;
-
person.atc=10;
-
person.def=5;
- person.attack=function(){//……具體動作}<