1
0
mirror of https://github.com/robertkrimen/otto synced 2025-10-12 20:27:30 +08:00

Get variable binding a bit closer to the specification

This commit is contained in:
Robert Krimen 2012-11-05 17:39:52 -08:00
parent 5f407353c2
commit bc6cd2ef12

View File

@ -236,11 +236,18 @@ func (self *_runtime) continueEvaluate(node _node, _labelSet map[string]bool) (r
}
func (self *_runtime) declare(kind string, declarationList []_declaration) {
environment := self._executionContext(0).VariableEnvironment
for _, _declaration := range declarationList {
self.localSet(_declaration.Name, UndefinedValue())
name := _declaration.Name
//self.localSet(_declaration.Name, UndefinedValue())
if kind == "function" {
value := self.evaluate(_declaration.Definition)
self.localSet(_declaration.Name, value)
} else {
if !environment.HasBinding(name) {
environment.CreateMutableBinding(name, false) // TODO configurableBindings
environment.SetMutableBinding(name, UndefinedValue(), false) // TODO strict
}
}
}
}