(name 'Javascript-yo.15' message 'double bang should be allowed.' id '33c07d57-ad04-4282-ad6d-70d9413986ed' date '23 March 2012' time '4:34:55.05 pm' author 'yo' ancestors ((name 'Javascript-yo.14' message 'KST prefix is renamed to KS.  Decouple JS worlds from KS world.' id '18ca3d22-e66c-49de-b311-7deb606252a9' date '13 March 2012' time '11:19:17.023 am' author 'yo' ancestors ((name 'Javascript-yo.13' message '$ is a valid char for names.' id '8b86bd64-60e5-4c86-a975-da6024749a87' date '13 March 2012' time '2:48:21.854 am' author 'yo' ancestors ((name 'Javascript-yo.12' message 'Remove new KScript stuff.' id 'ab7645ae-a5a9-41d9-8cbe-77d13870a553' date '6 March 2012' time '4:56:41.593 pm' author 'yo' ancestors ((name 'Javascript-yo.11' message 'And just fow now, add a lastId implementation to global as well.' id '76f343a1-cb6d-4fd7-8c2c-a24a67e619bf' date '19 February 2012' time '9:25:26.704 pm' author 'yo' ancestors ((name 'Javascript-yo.10' message 'Fix a bug of failing update.' id '47a27b73-4f9d-4a1f-a176-e23bead6ac15' date '19 February 2012' time '9:14:51.381 pm' author 'yo' ancestors ((name 'Javascript-yo.9' message 'A sandboxed global works as formula holder.' id '48b6c073-3bdf-4190-8d66-6658a8dddcf5' date '17 February 2012' time '8:17:35.775 pm' author 'yo' ancestors ((name 'Javascript-yo.8' message 'timerE works. and shouldEvaluate() and etc. work.

The following code work:

ll := LesserphicMorph new openInWorld.
ll window add: (a := LBox extent: 200@200 color: Color white).
table := LKTable new.
a install: table.
table columnNames: #(''heading'' ''speed'') titleLabel: ''Test''.
table addFormulae: ''speed1 = `timerE(100)''.
table addFormulae: ''heading1 = `collectE(speed1 + 10, 0, function(x, y) {return x + y})''.

table evalAt: 200.' id '77a6d77b-b907-441b-8c88-8393e8a270f6' date '17 February 2012' time '2:34:32.466 pm' author 'yo' ancestors ((name 'Javascript-yo.7' message 'A perhaps tentative entity to hold formuale (FomulaHolder) is introduced.  The variable lifting had a bug.  More code is written in JS.  The following test should work:

(JSObject eval: ''obj = new FormulaHolder(); obj.x = 3; obj.y = 4; obj.a = `obj.collectE(x+y, 0, function (x, y) {return x + y}); obj.evaluateAt(100); obj.a.currentValue()'' withGlobal: JSObject global)' id '91075c9e-ef32-4e99-8db1-d354723335c0' date '16 February 2012' time '10:21:51.581 pm' author 'yo' ancestors ((name 'Javascript-yo.6' message 'A simple example with collectE finally works.  
Try something like:
(JSObject eval: ''obj = {x: 3}; obj.a = `collectE(x, 0, function (x, y) {return x + y}); obj.a.__currentValue__ = obj.a.updater(obj); obj.a.__currentValue__ = obj.a.updater(obj); obj'' withGlobal: JSObject global)' id '2a640d06-77e3-48a7-8867-0bb574f54d67' date '10 February 2012' time '4:35:01.418 pm' author 'yo' ancestors ((name 'Javascript-yo.5' message 'KSCompiler, which supports backquote, is introduced.' id '960572f4-e5e8-435f-a4a4-f78424da0281' date '9 February 2012' time '4:53:06.946 pm' author 'yo' ancestors ((name 'Javascript-yo.4' message 'remove fixTemps.' id '3e6eb538-cf00-4bc4-a73e-c8f0591a9942' date '2 February 2012' time '2:06:07.826 pm' author 'yo' ancestors ((name 'Javascript-yo.3' message 'source infomation is added.' id 'f5c29e69-0531-4627-a4b3-ab3036c37c95' date '2 February 2012' time '12:17:12.528 am' author 'yo' ancestors ((name 'Javascript-yo.2' message 'Better tests.  Cleaner code.' id '4c2134d9-7355-4a44-aa96-e2979e7f6d89' date '31 January 2012' time '9:28:37.452 pm' author 'yo' ancestors ((name 'Javascript-yo.1' message 'Initial Version. May not Work.' id '7cd6a57e-7cb7-4549-b6ad-50ca672d9e49' date '31 January 2012' time '1:10:37.494 am' author 'yo' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())