by the way, the same restriction exists for es6-style class definitions.   

On Monday, April 3, 2017 at 10:48:56 PM UTC-7, Zac Hansen wrote:
>
> I'm nearly certain you cannot -- and I don't even believe they're 
> guaranteed to actually ever exist.  It would put pretty serious limitations 
> on the optimizer if everything in a block had to exist as written.
>
>
>
>
> On Monday, April 3, 2017 at 8:02:28 PM UTC-7, Ian Bull wrote:
>>
>> In J2V8 (our Java bindings for V8 [1]) we provide access to objects 
>> defined in the global scope.
>>
>> [1] https://github.com/eclipsesource/j2v8
>>
>> In Java you can write:
>>
>> v8.executeScript("var foo = [1,2,3]");
>>
>> V8Array array = (V8Array) v8.get("foo");
>>
>>
>> v8 in this case is the the isolate, and when we create the isolate we 
>> provide a Persistent<Object>
>>
>> that matches the global scope:
>>
>>
>>     Handle<Context> context = Context::New(runtime->isolate, NULL, 
>> globalObject);
>>
>>     runtime->context_.Reset(runtime->isolate, context);
>>
>>     runtime->globalObject = new Persistent<Object>;
>>
>>     runtime->globalObject->Reset(runtime->isolate, context->Global());
>>
>>
>> We can then access the objects using:
>>
>>   Handle<Object> object = Local<Object>::New(isolate, 
>> *reinterpret_cast<Persistent<Object>*>(objectHandle));
>>
>>   Local<String> v8Key = createV8String(env, isolate, key);
>>
>>   MaybeLocal<Value> result = object->Get(context, v8Key);
>>
>>
>> Where v8Key is the identifier ("foo" in this case), and object is the 
>> globalObject.
>>
>>
>> If we change the JavaScript to:
>>
>> "let foo = [1,2,3]" (notice let instead of var) this code returns 
>> Undefined. I'm not a JS expert 
>>
>> (I just write bindings), but I guess this is because let defines a block 
>> scoped variable, whereas
>>
>> var is not. Can we access these blocked scoped (ES6) variables using the 
>> V8 API? I would like
>>
>> to expose this to users of the J2V8 bindings.
>>
>>
>> Thanks,
>>
>> Ian
>>
>

-- 
-- 
v8-users mailing list
v8-users@googlegroups.com
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to