Categories: Front-End JavaScript

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 能夠有所幫助喔!

lioajimzen

Share
Published by
lioajimzen

Recent Posts

Vue – 運行ES Module,import與export

import 與 export 在Node.js 有提到其用法: Node.js require、module以及exports 模組設定 - Hugo Habor 每一個Javascript檔案可當作獨立模組系統(ES Module) 1. Module(模組)…

12 months ago

當你的Windows應用程式完全無法執行時,該怎麼辦?

作者今天遇到一個很奇怪的問題 寫程式寫到一半... 點擊應用程式時... 怎麼都跳不出畫面... 後來查詢了一下是Reg註冊可能被微軟更新給搞掉了... 文章資訊來源: 【以解決】各位.exe檔案打不開,不要相信"在 Windows 7 或 Windows Vista 中無法打開 .EXE 檔案"這篇文章…

2 years ago

Python environments in VS Code-建立虛擬環境

Python environments in VS CodePython-建立虛擬環境

2 years ago

Node.js 核心模組-create-server

Node.js可以提供你很多模組,今天來探索如何使用 Node.js 的 http 模組來架設一個簡單的伺服器。 本篇使用模組require 載入你所需要的模組。這次我們使用'http' 模組來創造一個簡單的server。 資料參考 Node.js - createServer 起手式 - iT…

2 years ago

Node.js require、module以及exports 模組設定

針對Node.js來談談 require、module以及exports 模組設定。這些概念允許開發者將大型程序分解成小的、可管理的、可重用的部分,稱為模塊。 下面將逐一介紹這些概念,以及它們如何與 JavaScript 關聯。 An Essential Guide to Node.js Modules (javascripttutorial.net) 1. Module(模組)…

2 years ago

JSON與foreach的逐一條列應用。

像是很多專案必須讀取國家資料中心的metadata,許多檔案格式為CSV、JSON、Html可以利用網頁技術去爬蟲;拿一個範例來嘗試看看就知道這些語法的實際用途。 [主題週]專題報導-開放資料 (Open Data)相關議題與應用 (114230) - Cool3c 在這裡我們使用台北市資料大平台 UBike2.0 作為資料依據! 目的 來抓取空位數量 >15, 抓取空位數量 <15。…

2 years ago