[ 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