Label statement moveable

L4L lv2lrn4lf at gmail.com
Wed May 20 18:04:34 UTC 2015


Please excuse me, I'm trying to move one email to another. Posting this to clear up confusion.

JS4Lf

> On May 20, 2015, at 1:46 PM, Emanuel Allen <emanuelallen at hotmail.com> wrote:
> 
> Yes:
> 
>> foo: {
>>     // ...
>>     if (bar)
>>         continue foo // (currently a SyntaxError)
>>     // ...
>> }
> 
> 
> in my first attempt at posting this I did something similar:
> 
>  function foo(v){
>> 
>>>>>  return v + 1;
>>>>> }
>>>>> 
>>>>> 
>>>>>  var i = 0;
>>>>> 
>>>>>  baz:{
>>>>>    i += 1;
>>>>>  }
>>>>> 
>>>>> continue baz;//same as foo(i);
>>>>> 
>>>>> console.log(i);
> 
> But not that I want restriction on where continue can be use; only in block scope. Rather that's in an if/else else if statement or a function statement.
> 
> 
> And another important thing is I want label statement reachable from the scope they are define.
> 
> So my first attempt example would actually be rewritten to:
> var i;
> foo:{
>   if(typeof i!=='number') break;
>   i+=1;
> } 
> I =0;
> {
> if (i < 5);
>   continue foo;
> }
> 
> console.log(i);//log 4
> 
> Again the true aim for this is to lower function calls. 
> 
> 
> JS4Lf
> 
>> On May 20, 2015, at 11:56 AM, Claude Pache <claude.pache at gmail.com> wrote:
>> 
>> I occasionally (quite rarely) use the following variant of the classical `do/while(false)` trick:
>> 
>> ``
>> foo: do {
>>     // ...
>>     if (bar)
>>         continue foo // meaning: restart from foo
>>     // ...
>>     break 
>> } while (true) // not a real loop, just a hack
>> ```
>> 
>> Maybe the following syntax could be used?
>> 
>> ```
>> foo: {
>>     // ...
>>     if (bar)
>>         continue foo // (currently a SyntaxError)
>>     // ...
>> }
>> ```
>> 
>> WDYT?
>> 
>> —Claude
>> 
>> 
>>> Le 20 mai 2015 à 12:45, Sebastian McKenzie <sebmck at gmail.com> a écrit :
>>> 
>>> So you want to add goto to JavaScript?
>>> 
>>> 
>>> 
>>> 
>>>> On Wed, May 20, 2015 at 11:42 AM, Emanuel Allen <emanuelallen at hotmail.com> wrote:
>>>> Clarify:
>>>> 
>>>> My previous post was not that clear. That post display what I would like to do in the language. Here is the actual code if I choose to do it as the language is now: 
>>>> var i = 0, n = 5;
>>>> l2: do {
>>>>  i += 1;
>>>>  l3: do {
>>>>    if (i<n) continue l2;
>>>>    else break l3;
>>>>  } while (true);
>>>>  break l2;
>>>> } while (true);
>>>> //just log the value n+1:
>>>> console.log('i:'+i);
>>>> 
>>>> loop through label l2 n amount of times before breaking.
>>>> 
>>>> This could be useful to escape function invocation cost, if it could be simply express:
>>>>  l2: {
>>>>   i += 1;
>>>>  }
>>>>  l3: {
>>>>    if (i<n) continue l2;
>>>>  }
>>>> 
>>>> The function way is to:
>>>> function l2(){
>>>>   i += 1;
>>>> }
>>>> 
>>>> l3: do {
>>>>    if (i<n) l2();
>>>>    else break l3;
>>>>  } while (true);
>>>> 
>>>> I did a <a href="http://jsperf.com/block-scope-vs-function-invocation">
>>>> jsprf </a>to further my argument for a sudo goto/function effect:
>>>> 
>>>> http://jsperf.com/block-scope-vs-function-invocation
>>>> 
>>>> JS4Lf
>>>> 
>>>>> On May 19, 2015, at 2:45 PM, L4L <lv2lrn4lf at gmail.com> wrote:
>>>>> 
>>>>> Since we have block scope, and we have continue statement to which we can use in loops to jump back to the conduction statement part. 
>>>>> 
>>>>> Than can we consider making label stamens moveable by its name. 
>>>>> 
>>>>> I'll like to say that the side effect would be sudo(pseudo) function, example:
>>>>> 
>>>>> function foo(v){
>>>>>  return v + 1;
>>>>> }
>>>>> 
>>>>> 
>>>>>  var i = 0;
>>>>> 
>>>>>  baz:{
>>>>>    i += 1;
>>>>>  }
>>>>> 
>>>>> continue baz;//same as foo(i);
>>>>> 
>>>>> console.log(i);
>>>>> 
>>>>> Note that I said sudo function. Its mobility is what of value; depending on how JavaScript handle the continue statement in a loop to transport that effect out side a loop. 
>>>>> 
>>>>> Stripping this privilege to black scope; where the continue statement is expanded to work only in block scope and nested block scope; to where it can only jump to the beginning of that block or any other block scope that is scoped to that outer block scope but not nested block scope with in the scope... Like function.
>>>>> 
>>>>> Continue and break statement could be of more power; where we can avoid some function call in "speed matter" application.
>>>>> 
>>>>> Excuse any grammar errors. 
>>>>> 
>>>>> JS4Lf
>>>>> _______________________________________________
>>>>> es-discuss mailing list
>>>>> es-discuss at mozilla.org
>>>>> https://mail.mozilla.org/listinfo/es-discuss
>>> 
>>> _______________________________________________
>>> es-discuss mailing list
>>> es-discuss at mozilla.org
>>> https://mail.mozilla.org/listinfo/es-discuss
>> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20150520/ba421b31/attachment-0001.html>


More information about the es-discuss mailing list