週五編輯室|蘋果香蕉與電腦|編輯之狗

SAMPLE
·
·
IPFS
一開始接觸 JavaScript ,時常覺得 coding 就是一種指向與代入,例如 let a = [1, 2, 3, …],每次需要用到這個數列時,直接call a 便可。多麼複雜的運作,都可以靠拆解與編寫,即,將需要解決的問題細分,編寫不同function,用符號代入再組合一起,一個複雜的網站或程式,便由此得以運作。簡直是一種邏輯應用之美。

原文刊載於Sample雜誌IG

一開始接觸 JavaScript ,時常覺得 coding 就是一種指向與代入,例如 let a = [1, 2, 3, …],每次需要用到這個數列時,直接call a 便可。多麼複雜的運作,都可以靠拆解與編寫,即,將需要解決的問題細分,編寫不同function,用符號代入再組合一起,一個複雜的網站或程式,便由此得以運作。簡直是一種邏輯應用之美。

但在實際操作的時候,總是遭遇困惑。我們現時所瀏覽的網站之所以如此動態,便是因為內容的自我更新及中間的銜接流暢。這也意味了,符號需要時常更新。a 不能只等於一行特定的數列。例如以下例子:

let a = “apple”

let fruit = a

這個情況下,帶有””的 apple 在電腦眼中是作為一個 string 存在,只要每次向其輸入 a 便會得到 “apple”。因此第二條指令,實質也是將 fruit 指向 a 的過程,同時得能 fruit 等於 “apple” 的結果,記住 a 或 fruit 都是符號,他們指向特定內容,本身並沒有意義。由此按常理推斷,若果 a 所指向的內容改變,例如 a = “banana” ,那我們輸入 fruit 也應該變成 “banana”,但事實卻非如此,如果你打開網頁,然後右 click 選擇 inspect ,按順序輸入

let a = “apple” 然後 enter

let fruit = a
然後 enter

a = “banana” 只有第一次指向才需要使用 let

console.log(a)
你會得出 banana

console.log(b) 你會得出 apple

b 在第一次指向 a 時,實際上並不指向符號,而且透過這個符號,複製其所指涉的內容,即是 ”apple”,所以無論 a 如何更改,都會同 b 再無關係。

但更令人困惑的是,如果你換一種方法,得出的結論卻不同:

let box = { a: “apple”}
另外一種代入格式,名為object,當輸入 box.a 時,便會出 apple

let newBox = box

box.a = “banana”

console.log(box) 會出 banana

console.log(newBox)
也會出 banana

其中的原理牽扯的 JavaScript 的原理 Reference 和 Primitive values 的分別,在此不多說,簡單而言,便是使用 object 的時候,電腦的運行方式較為複雜,會在符號與內容之間建立一層 pointer ,所以 newBox 並不產生內容,而是指向 pointer box 本身 。

而這種違反直覺的情況,在 JavaScript 這種語言中不斷出現,讓你深陷其中。

網站近十年最大的改變在於更新內容的條件與方法更加嚴謹了,過往,按下下一頁,整個網頁會 refresh,重新從 database 獲取訊息。但現時的網站卻可以在不 refresh 的情況下,更新內容,甚或只是更新部分內容,這全靠 React 或 angular 的發誕生。也許大家感興趣的話,下次再談多些。

____________________

#Sample樣本 #香港文學 #設計 #閱讀 #文學 #評論 #藝術

#literature #graphicdesign #hongkongart

All rights reserved

Like my work? Don't forget to support and clap, let me know that you are with me on the road of creation. Keep this enthusiasm together!

SAMPLE❛ 如果可以這樣做雜誌 ❜ http://linktr.ee/samplemaghk
  • Author
  • More

不會腐爛的香蕉?

疼痛與痕癢的身體交纏

失落與成長的神奇之旅