[
https://issues.apache.org/jira/browse/THRIFT-1200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13046276#comment-13046276
]
Ilya Maykov commented on THRIFT-1200:
-------------------------------------
As far as I know, the "var" keyword is not necessary here. In JavaScript,
omitting "var" always makes a variable global. Using "var" gives a variable
local scope (so, within a function would give it function scope). However,
because the namespace declaration happens at global scope, the "var" keyword
has no effect.
> JS compiler generates code that clobbers existing namespaces
> ------------------------------------------------------------
>
> Key: THRIFT-1200
> URL: https://issues.apache.org/jira/browse/THRIFT-1200
> Project: Thrift
> Issue Type: Bug
> Components: JavaScript - Compiler
> Affects Versions: 0.6.1
> Environment: all
> Reporter: Ilya Maykov
> Assignee: Ilya Maykov
> Attachments: THRIFT-1200-js-namespace-fix.txt
>
>
> The JavaScript compiler currently generates code that will clobber an
> already-existing namespace. It should check if the namespace exists before
> initializing it to {}. Example code pre-patch, assuming the .thrift file has
> the declaration {{namespace js CompanyName.ModuleName}}:
> {code:JavaScript}
> var CompanyName = {};
> CompanyName.ModuleName = {}
> {code}
> Becomes this after patch:
> {code:JavaScript}
> if (typeof CompanyName === 'undefined') CompanyName = {};
> if (typeof CompanyName.ModuleName === 'undefined') CompanyName.ModuleName =
> {};
> {code}
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira