[ 
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

Reply via email to