iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
0
Modern Web

小白的JavaScript讀書日記系列 第 4

Day4:基本語法(二)

在Day3我們了解了JavaScript的基本語法例如:在HTML載入JavaScript,陳述句是什麼?註解是什麼?...等等,
以及感謝看官的留言指證,讓我又學到了!俗話說的好萬丈大樓平地起,基本的概念一定要熟悉呀!!!
今天繼續介紹基本的語法,讓我們接著看下去~




變數與常數

變數(Variable):

意思是存放資料的箱子,我們所撰寫的程式是一連串存取資料的過程,而儲存處理果程中暫存的資料,就是變數的功用。

使用變數需要先宣告變數,所謂宣告意思是告訴電腦,我要使用這個箱子囉,請在記憶體幫我開好一個空間,給我之後要儲存的值。再JavaScript中,可以使用 var 指令宣告變數。語法如下:

//宣告msg變數;
var msg;

如果要同時宣告很多變數時可以用逗點隔開如下:

//宣告了四個變數:msg, x, y, z
var msg, x, y, z;

宣告變數時也可以同時指派值給變數:

//將18這個值,指派給age這個變數
var age = 18;

試著宣告一個自己的變數吧!

再ES6開始新增了let指令,什麼是let呢?語法和 var 相同,但不同之處是,使用let宣告變數時,不允許同名稱的變數,請看下列例子:

在VSCode新增一個index.html以及all.js,並將all.js載入index.html中,再將以下程式碼輸入到all.js中:
(忘記的朋友可以看基本語法(一)複習一下喔))
https://ithelp.ithome.com.tw/upload/images/20200904/20129488UI6C0duOxS.png

接著,使用Chorme開發者工具,開啟console可以發現這段錯誤訊息:
Uncaught SyntaxError: Identifiter 'old' has already been declared
意思是,變數old已宣告的錯誤訊息
https://ithelp.ithome.com.tw/upload/images/20200904/20129488CqTCPWXaRW.png

由上面的例子可以發現,使用var 宣告的 age 變數 是可以重複宣告的,但使用 let 宣告的 old 不行。

小練習1:請更正上述的錯誤。

p.s. let 是在ES6開始後才出現的,因此使用時記得確認一下呦~

常數(Constant)

宣告方始基本與常數一樣,但差別是,

變數用箱子做比喻,意思是箱子的內容物可以一直置換;

常數就好比一個上鎖且定義明確的箱子,我們一開始就要決定這個箱子要放什麼,然後所放的東西是不能改變的,請看以下例子:

我們輸入以下程式碼,並用Chrome的Console來觀看:

(方法如同上述變數的例子)
https://ithelp.ithome.com.tw/upload/images/20200904/20129488VaXOBcKSFu.png

再下圖中,Chrome的Console裡面我們可以發現all.js中第11行出現錯誤訊息

Uncaught TypeError: Assigment to constant variable.

意思是修改 常數(NUM) 產生的錯誤。
https://ithelp.ithome.com.tw/upload/images/20200904/201294880wuxaSopps.png

由上述例子可以可以得知,NUM是沒辦法改變的。

小練習2:請更正上述錯誤。

另外在宣告常數時,必須同時賦予值,他不像變數(var let),請看以下例子:

(再all.js中宣告兩個變數,一個常數)
https://ithelp.ithome.com.tw/upload/images/20200904/20129488ANVffNfFql.png

在console中可以發現all.js的第3行出現錯誤訊息

Uncaught SyntaxError : Missing intializer in const declaration

意思是沒有賦予常數的值。
https://ithelp.ithome.com.tw/upload/images/20200904/20129488rIXeyRdhQH.png

小練習3:請更正以上的錯誤。

現在應該變數和常數有初步的認知了!接著我們介紹在命名時的規則以及一些常用的方法。

識別字:

意思是指,當我們在宣告變數、常數、函數、方法、標籤時,所命名的名稱,規則基本上通用於不同的程式語言(可能還是有稍微的差異,但基本相同)。

var name = 'ben';
//再變數name中,name是識別字

規則如下:

  1. 開頭必須是英文字母、底線()、或者是錢字號($)

    var name,$money  *//符合規定
    var 1name        //不符合規定*
    
    
  2. 第2個字元後可以使用字母、數字或者底線

    var name2,money$     //符合規定
    var name-2,money@    //不符合規定3.
    
  3. 變數名稱需區分大小寫

//以下name和Name各代表一個變數
var name,Name

4.不可以使用JavaScript 保留字(下圖為JavaScript的保留字)

https://ithelp.ithome.com.tw/upload/images/20200904/20129488T80eIXbrbA.png

命名的一些注意事項:

在命名中應該掌握幾個原則,容易了解資料的內容,不要過長過短,基本上用英文命名。
以下有一些常用的寫法提供給大家:

1.駝峰式(camelCase):開頭第一個單字小寫,之後的單字的第一個字元大寫

var myName = 'Ben';

2.Pascal法:所以單字的第一個字元都大寫

var MyName = 'Ben';

3.底線法:單字間用底線做連結

var my_name = 'Ben';
var MY_NAME = 'Ben';

書本上建議的用法如下:

變數/函數 命名用:駝峰式

常數 命名用:底線法

類別(建構子)命名用:Pascal法




資料型別

資料型別意思是,資料的種類,像是,肉有分,豬牛雞豬魚羊...等,程式語言中資料也有分成幾種不同的種類。

在我們了解有哪些種類前,先提醒一下在某些語言中資料型別的規定很嚴格,例如C#,Java中,當你宣告為字串的變數,就不可以拿來存儲數值,反之也是。
但在JavaScript中沒有這個問題,請看以下例子:
https://ithelp.ithome.com.tw/upload/images/20200904/20129488ayx2W8Xpz7.png

上圖(左):我們先宣告了一個 x變數,並賦予數值 100 的值,接著輸出,再將字串 '一百' 賦予 x變數,接著再輸出一次。

上圖(右):Chrome的console中可以觀察到all.js的第2、第4行的結果。
由此可以得知,再JavaScript中,可以輕易地改變變數的資料型別。

下面介紹JavaScript中主要的資料型別:

分為基本型態與參考型態,其中的差異在後面會詳細介紹,在這邊我們先知道兩種型態的操作方式是不同的。

基本型:

1.數值(number):1,2,3,4...

var num = 1;

2.字串(string):'一'、'二'、'三'、'四'...

var string = '一';
var String = "二";
var string_01 = '三"; //錯誤
//字串必須用單引號或者雙引號包起來,但不能混著用

var string_02 ='He's Ben'; //錯誤
var string_03 = "He's Ben"; //正確
//在字串中,如果用單引號包住,裡面就不能使用單引號,反之也是。
 在ES6新增了樣板字串(Template String):樣板字串中使用反引號(``)取代單引號/雙引號

 並可以包含下列內容:
  • 字串中嵌入變數
  • 支援多行字串(包含換行文字)
    範例如下圖:
    https://ithelp.ithome.com.tw/upload/images/20200904/20129488n58soBl7zT.png

3.布林值(boolean):True / False

var t = true;
var f = false; 

4.特殊型別(null/undefined):

空值(null):表示參數沒有對應的值存在,所以是空的。
未定義的值(undefined):表示某參數的值尚未定義。

參考型:

1.陣列(array):
是一種資料的集合,在一個變數中存放多個值(可以不同型別),在陣列中的值,稱之為元素。
以箱子為例的話,陣列就是一個箱子中有幾個附上號碼的區域:
https://ithelp.ithome.com.tw/upload/images/20200904/201294888g4mBzHgkI.png

在data這個箱子中,有幾個不同的值'Ben'、'33456'、'Mary'。
寫成程式碼如下:每個值用逗點區隔,並且用中括號包住

var data = ['Ben', 33456, 'Mary'];

要存取陣列時必須使用索引值,什麼是索引值呢是以0為起始點,開始往後數0、1、2...等,
以上圖的例子來說,我要取出33456的寫法如下:

var data = ['Ben', 33456, 'Mary'];
//取33456
console.log(data[1]);

陣列裡面也可以包含陣列:

var data = ['Ben', 'cat', 'dog', [111, 444]];

//取444
console.log(data[3][1]);

2.物件:
與陣列類似,但存儲於物件中的資料稱為屬性,屬性除了可以是字串、數值以外,還可以是函數。語法如下:

var obj = {x:1, y:'cat', z:5};
//取'cat'
console.log(obj.y);
console.log(obj['y']);

與陣列不同是,最外面用大括號包住物件整體,並且用在物件整體中用 索引名稱:值, ....

3.函式(function):
將某些輸入值(參數),已預先設定好的程序處理後,再回傳結果。
p.s在這邊我們先有基本概念即可,後續會更詳細的介紹。




本日總結

變數 var let
常數 constant
資料型別(基本型、參考型)
有附上小練習三題,有興趣的朋以可以trytry看,在隔天會附上解答呦。

今天就到這邊了...我們明天見!


上一篇
Day3:基本語法(一)
下一篇
Day5:基本語法(三)
系列文
小白的JavaScript讀書日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言