| Adios |
| MSN |
| 下午 2: | 47 |
| http: | //gist.github.com/145552 |
| 下午 2: | 47 |
| case 2 效率比較好 ? |
| 下午 2: | 48 |
| 1 跟 3 的行為會不會一樣 ? |
| [王小旺] 心裡有了人就會比較踏實 |
| MSN |
| 下午 2: | 48 |
| wait |
| 下午 2: | 49 |
| 效率: | 2>1, 3 我還在看 |
| 下午 2: | 49 |
| 效率: | 2=3 > 1 |
| 下午 2: | 50 |
| I guess. |
| Adios |
| MSN |
| 下午 2: | 50 |
| 3 不會因為每次 test.reorder() 執行完,沒有人要用 qsort() 就 free 掉 ? |
| 下午 2: | 50 |
| 沒有人 reference qsort() |
| [王小旺] 心裡有了人就會比較踏實 |
| MSN |
| 下午 2: | 51 |
| function 應該會一直被 reference 吧? |
| Adios |
| MSN |
| 下午 2: | 51 |
| ok |
| [王小旺] 心裡有了人就會比較踏實 |
| MSN |
| 下午 2: | 52 |
| I guess, 不過應該要看 JS engine |
| 下午 2: | 52 |
| 但是至少可以確定不會消失 |
| Adios |
| MSN |
| 下午 2: | 52 |
| function 都不會消失嗎 ? |
| [王小旺] 心裡有了人就會比較踏實 |
| MSN |
| 下午 2: | 52 |
| 應該是吧 |
| 下午 2: | 52 |
| 除非是 var f = function (); f = new_value; 這種情況 |
| Adios |
| MSN |
| 下午 2: | 53 |
| oh |
| [王小旺] 心裡有了人就會比較踏實 |
| MSN |
| 下午 2: | 53 |
| 去翻 JS engine 的 source code 吧 |
| 下午 2: | 53 |
| 找到再跟我說 |
| Adios |
| MSN |
| 下午 2: | 54 |
| 好像會消失噎 |
| 下午 2: | 54 |
| general idea is that if an object becomes un-referable (by having no remaining references to it left accessible to executing code) it becomes available for garbage collection |
| 下午 2: | 54 |
| object |
| 下午 2: | 55 |
| the Activation/Variable object and any objects created within the execution context, including function objects, would no longer be accessible |
| 下午 2: | 55 |
| http: | //www.jibbering.com/faq/faq_notes/closures.html#clAtGb |
| 下午 2: | 55 |
| 也許除非引擎有比較聰明 不然應該都會刪掉 |
| 下午 2: | 56 |
| 還是說在 prototype 的 List.reorder() { } 裡面也算 reference ? 因為 List 一直在 所以 reference 一直在 ? |
| [王小旺] 心裡有了人就會比較踏實 |
| MSN |
| 下午 2: | 58 |
| 我覺得可能是: |
| 因為你有用到, 所以 compile 過程中幫你偷建一個 ref? |
| 下午 2: | 58 |
| 不然像 Forming Closure 例子裡面的 localVar 怎麼辦? |
| 下午 3: | 00 |
| 我懂了! |
| 下午 3: | 01 |
| var qsort = function () { /* code 1 */ }; |
| var qsort = function () { /* code 2 */ }; /* 這時候 code 1 的 function 會失去 ref, 然後被 gc */ |
| 下午 3: | 01 |
| 所以你宣告 function qsort() {...} 就不會發生這樣的事情 |
| 下午 3: | 02 |
| 不太對, 因為離開 (function () {})() 的 scope 了... |
| 下午 3: | 03 |
| 所以我猜是 compile-time 偷加 reference. |
| Adios |
| MSN |
| 下午 3: | 03 |
| 真是太神祕了 |
| 下午 3: | 03 |
| 可是我不想讓外面用到 qsort() |
| 下午 3: | 03 |
| 所以想寫成 3 |
| 下午 3: | 03 |
| 我鮮血 3 在測看看那樣比較快 |
| [王小旺] 心裡有了人就會比較踏實 |
| MSN |
| 下午 3: | 04 |
| 理論上絕不會是每次重新產生, 因為那個 anoymous function 只會 run 一次 |
| 下午 3: | 04 |
| 每次產生比偷加 ref 還難做 |
| 下午 3: | 05 |
| 1. 就有可能每次重新產生一個 qsort. |
| 下午 3: | 05 |
| 這樣才做得到 closure |
| Adios |
| MSN |
| 下午 3: | 05 |
| 在 static scope 的時候 case 3的 reorder () 就會偵測到 qsort 在 scope 裡面 因此就建立 referenece 了吧 我猜 |
| [王小旺] 心裡有了人就會比較踏實 |
| MSN |
| 下午 3: | 06 |
| static scope? |
| 下午 3: | 06 |
| 你說的應該就是我說得 compile-time 產生的意思? |
| Adios |
| MSN |
| 下午 3: | 06 |
| 應該吧 |
| 下午 3: | 06 |
| XD |
| [王小旺] 心裡有了人就會比較踏實 |
| MSN |
| 下午 3: | 06 |
| Adios |
| MSN |
| 下午 3: | 06 |
| js 很複雜 |
| 下午 3: | 07 |
| 比吸還南 |
| [王小旺] 心裡有了人就會比較踏實 |
| MSN |
| 下午 3: | 08 |
| 因為你沒研究 C 的 compiler |
| 下午 3: | 08 |
| dynamic lang 本來就比較麻煩 |
| Adios |
| MSN |
| 下午 3: | 08 |
| 喔 Automatic GC 應該只會針對 後來產生的做 GC 吧 ? 所以在 compile time 舊有的就不會動才是 |
| 下午 3: | 08 |
| 對 runtime 做 GC |