iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0
自我挑戰組

I don't know JS yet系列 第 9

[ Day 9 ] I don't know JS yet - Declaring and Using Variables

  • 分享至 

  • xImage
  •  

延續上一篇文章,values 分成 primitive value 和 object value; 這兩種 values 在 assigned, passed 的時候會有不同的行為:call by values / call by reference。

開始今天的學習吧

Variable

在 JS 有三種方式,來宣告一個變數

  • var
  • let
  • const

var

    var myName = "Cheryl";

let

    if (true) {
        var myName = "Cheryl";
        let age = 23;
    }
    
    console.log(myName); // "Cheryl"
    console.log(age);    // undefined

由 let 宣告的變數,會在宣告的時候,找尋所屬的 block-scope,在 block-scope 以外的地方,無法 access 該變數。( 與 block scoping 相對的是 regular / funcion scoping )

const

    const myBirthday = '2022/01/01';
    let myAge = 23;
    
    if (true) {
        myBirthday = '2022/12/31'; // ERROR!
        myAge = 24; // OK!
    }

由 const 宣告的變數,無法被 re-assigned,但不是 unchangeable
這邊舉個例子,用 const 來宣告一個 object:

    const me = {
        'firstName': 'Cheryl',
        'lastName': 'Chuang',
        'age': 23,
    };
    
    me['age'] = 24;
    
    console.log(me);
    // {
    //  'firstName': 'Cheryl',
    //  'lastName': 'Chuang',
    //  'age': 24,
    // }

因為 const 雖然不能被 re-assigned,但 changeable 的特性,作者不建議用 const 來宣告 object,因為 object 的 value 還是可以改變,容易造成混淆。像是上面的 me 物件,age 就和宣告時不同,容易讓人懷疑:所以 me 的 age 是 23 還 24 這樣的問題。

因此作者點出,如果你有 primitive values 需要宣告,且這些 value 的值不會改變,那麼用 const 非常適合,也可增加易讀性,像是 const isFemale = true; 這樣。

最後來個作者的 tips:

If you stick to using const only with primitive values, you avoid any confusion of re-assignment (not allowed) vs. mutation (allowed)! That's the safest and best way to use const.

今天的學習到這邊

[ 參考 ]


上一篇
[ Day 8 ] I don't know JS yet - values
下一篇
[ Day 10 ] I don't know JS yet - Functions
系列文
I don't know JS yet30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言