在寫 scripting language 時 都知道變數通常可分為 primitive type 跟 reference type
primitive type 是 pass by value 而 reference type 是 pass by reference
可能語言會宣稱自己只有 pass by value (例如 java, 雖然他不是 scripting 語言)
但是保持一個觀念就是 reference type 的變數被傳進一個函式後
函式對這個變數做的改變在函式退出後還可以看的到
不過對 javascript 和 vbscript 來說 string 是特別的 string 不是物件 所以他是 primitive type
但是 string 又可以是任意長度的 所以如果 string 如果是 pass by value 將會很沒有效率
所以在實作上通常把他作為 pass by reference
如果只用 primitive type 和 reference type 來 分別 pass by value 和 pass by reference
可能會對 string 的 pass rule 搞錯了
沒有留言:
張貼留言