tldr: javascript的基本語法,包括變數宣告、判斷式、迴圈等等。
特性:
;
將其做分別// 這是一個單行註解
/* 這是一個多行註解 */
/* 下方為特殊的註解:Hashbang Comment,用於指定所要執行的程式引擎
這種僅會出現在檔案的最上方 */
#!/usr/bin/env node
特性:
a~z
, A~Z
, _
, -
, $
類別 | 說明 | 需要初始化? |
---|---|---|
`var | 宣告一個變數 | No |
let |
宣告一個區域變數 | No |
const |
宣告一個無法變更值的區域變數 | Yes |
資料型態 | 說明 |
---|---|
Boolean |
是(True) 與 否(False) |
Number |
數字(整數或浮點數) |
BigInt |
長整數 |
String |
字串(一長串的字元) |
[Symbol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol) |
該資料型態的物件皆為「獨一無二」且「無法變動」 |
null |
空白 |
undefined |
未定義 |
Object |
物件 |
宣告範例:
let x = 10;
為一列的物件,稱之為陣列。
陣列以分號將物件分開,若兩個分號間沒有元素,則陣列中將會留下一個未有任何儲存資料的空格。
/* 以下為陣列: ["apple", 空白, "banana"] 的宣告
const array_1 = ["apple", , "banana"]
Literals為一種表示資料數值的方式,不過與變數不同的是,他們無法改變,並且是直接於程式碼中給出特定且不會更動(指的是於程式執行時)的值。
一個容易理解這個名詞的方式是,英文中的Literally,有著確實地、名副其實地之意義,而他的名詞型態為Literal,並且在程式碼中,Literals將會Literally出現在檔案中,這麼一想是不是變得比較容易懂呢?
大括弧內的區域皆為「Block區塊」,此物常與控制流程與函數等一同出現。
{
statement1;
statement2;
// …
statementN;
}
如果if
的條件達成(為True),將執行第一部份的區塊,否則將執行else
的區塊。
若if
下方為 else if
的話,則判斷它是否條件達成,若有則執行其區塊,否則進到下一行(若是else
則直接執行,是else if
的話則繼續做判斷)
表示False之值:
if (condition1) {
// Statements for when condition1 is true
// …
} else if (condition2) {
// Statements for when condition2 is true
// …
} else if (conditionN) {
// Statements for when conditionN is true
// …
} else {
// Statements for when all conditions are false
// …
}
判斷switch
中的內容是否符合任何一個case
所述,若是,則從該行開始執行,且遇到break
將會直接跳至區塊的末端。
如果沒有任何case
符合條件,則執行default
(預設)如果它存在。
switch (expression) {
case label1:
statements1;
break;
case label2:
statements2;
break;
// …
default:
statementsDefault;
}
for (let step = 0; step < 5; step++) {
// 每次執行完將step加一,當step大於等於5時將會結束迴圈,共執行5次
// ...
}
重複執行直到條件不成立
while (condition){
// statement
// ...
}
與while迴圈相似,不過它是先執行工作,再去判斷要不要進行迴圈
let i = 0;
do {
i += 1;
console.log(i);
} while (i < 5);
function func(num) {
return num * num;
}
console.log(func(3));
function addSquares(a, b) {
function square(x) {
return x * x;
}
return square(a) + square(b);
}
不為函式命名,而是將它存入一個變數中。如此一來之後便可以將該變數作為參數傳入其他的函式之中。
function map(f, a) {
const result = new Array(a.length);
for (let i = 0; i < a.length; i++) {
result[i] = f(a[i]);
}
return result;
}
const numbers = [0, 1, 2, 5, 10];
const cubedNumbers = map(function (x) {
return x * x * x;
}, numbers);
console.log(cubedNumbers); // [0, 1, 8, 125, 1000]
將函式的宣告用小括弧包裹起來,並於其後方再加一組小括弧,如此宣告結束後函式便會立刻被呼叫並執行。
(function () {
// Do something
})();
const value = (function () {
// Do something
return someValue;
})();
const createPet = function (name) {
let sex;
const pet = {
// setName(newName) is equivalent to setName: function (newName)
// in this context
setName(newName) {
name = newName;
},
getName() {
return name;
},
getSex() {
return sex;
},
setSex(newSex) {
if (
typeof newSex === "string" &&
(newSex.toLowerCase() === "male" || newSex.toLowerCase() === "female")
) {
sex = newSex;
}
},
};
return pet;
};
const pet = createPet("Vivie");
console.log(pet.getName()); // Vivie
pet.setName("Oliver");
pet.setSex("male");
console.log(pet.getSex()); // male
console.log(pet.getName()); // Oliver
用於傳至函式內的值,可設預設值(如下方的b = 1
)
function multiply(a, b = 1) {
return a * b;
}
console.log(multiply(5)); // 5
謝謝各位的閱讀,有任何想法或建議都歡迎留言告知!明天會繼續努力更新的!
參考資料: