Tag: undefined

  • JS-Not Defined VS undefined 還有Null

    當看完JS-提升之後, 為了加深記憶體區塊”空的”概念, 我們來探討一下

    下方有一篇原文網站GeeksforGeeks, 內容講述此現象:

    https://www.geeksforgeeks.org/javascript-referenceerror-variable-is-not-defined/

    給予肝肝的工程師小額捐款'V': ETH/ERC20
    0xd20c50c82450ee288711bf5e3f9238bc816c168a

    主要區分以下

    • Not Defined
    • Undefined

    <Not Defined >

    // let a;  
    console.log(a);
    console.log(typeof a);
    

    解釋:

    當你的記憶體區塊 let a , 並沒有宣告時

    你的瀏覽器將抓不到”a”

    這就是所謂的: Not Defined

    <Undefined >

    let b;
    console.log(b);

    解釋:

    當你的記憶體區塊 let b 存在時

    你的瀏覽器將抓到的是這個 記憶體區塊

    但是你並沒有賦予值

    所以只會有: Undefined

    *那你會想問… null 的特性怎麼跟undefined那麼像??

    <Null > 空值

    一般我們在VB.Net、C#JAVA 這些程式語言裡面…

    VB.Net :

    Dim C As Interger = 32

    C#:

    Int C =32; 

    JAVA:

    Int C =32;

    你會發現, 以上語言都必須先“宣告型態”,也就是我們本文章所講的記憶體區塊.

    後面按照需求, 賦予該記憶體區塊一個.

    但是 Javascript不一樣, Javascript本身是一種需要被解釋的語言, 而且不用宣告型態就可以直接賦予值

    let a ;
    a=1;
    c=null;
    d=11;
    
    console.log(a);
    console.log(c);
    console.log(d);

    解釋

    你會發現… c 被賦予 null(空值), 通常這個變數內有值時, 就可以用這個方式清空.

    d 沒有記憶體區塊, 卻照樣可以直接被賦予值

    為求謹慎, 我們來看看 c、d 的Type 是甚麼好了

    let a ;
    a=1;
    c=null;
    d=11;
    
    console.log(a);
    console.log(c);
    console.log(d);
    console.log(typeof c);
    console.log(typeof d);

    解釋

    c 的型態為object (物件)

    d 單純就是變量

    結語

    看似很簡單, 講起來卻很繞口…

    藉由探討 Javascript語言特性記憶體區塊 對後續優化網站有很大的幫助.

    希望這樣看到文章的Programmer 能夠有所幫助喔!