SAMPLE
SAMPLE

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

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

一開始接觸 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 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…
加载中…

发布评论