JavaScript Object
物件,是被賦予值的名稱組合。物件有屬性和方法。
Object has primitive property.
Object has object property, function method.
想像物件在記憶體中有個位置,能夠參考其他和它相關的記憶體位置。
一級函數 First Class Function
JavaScript 中的函數就是物件
指派一個變數的值為函數,可以將函數當作參數傳入另一個函數,也可以用實體語法立即創造函數。
函數一樣寫在記憶體中,具備所有物件的特色,還有一些其他屬性。
函數可以有屬性和方法。有一些隱藏的特殊屬性:name(optional)(沒有名字的即是匿名函數) & code property程式屬性,這個屬性是可以呼叫的 invocable。
一級函數的概念:可以把函數傳入別處。把函數傳給另一個函數,就像使用變數一樣!
函數陳述句 & 函數表示式
📍 函數表示式 Expression
A unit of code that results in a value. It doesn’t have to save to a variable.
會回傳一個值,值可以是數字、字串或是物件。
📍 函數陳述句 Statement
函數陳述句會被放進記憶體中,當它被執行,不會回傳值,在執行環境的創造階段會有提升效果。舉例:if statement
if( Expression is here ) {xxx};
兩者差異:陳述句在執行階段的時候,只會知道那邊有個函數。然而表示式會讓物件被創造出來,回傳一個物件(值)。
By value & By reference
都和變數 variable 有關,純值 by value ,物件 by reference。
Array & Object 如果直接用等號,都是 by reference。若只要複製值,不要參考到原本的位置,可以用擴展運算符(…)協助(為淺拷貝)。還有其他方法可以使用,詳細請參考下方兩篇文章:
🖇 ES6 Way to Clone an Array
🖇 3 Ways to Clone Objects in JavaScript
📐✏️ 📏
若有任何錯誤請在下方留言~🙏 Thanks!