<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>As Isiah Meadows said, you can just use variables.<br><br>```<br>var removeNode = true;<br>control.dispose(removeNode);<br>```<br><br><div>```<br>var silent = true,<br>      disableValidation = true,<br>      destroyOldValue = false;<br></div><div>model.set('foo', newValue, {silent, disableValidation, destroyOldValue});</div><div>```</div><br><div><hr id="stopSpelling">From: otakustay@gmail.com<br>Date: Thu, 26 May 2016 09:02:21 +0000<br>Subject: How about a "named true" and a "named true property"<br>To: es-discuss@mozilla.org<br><br><div dir="ltr">I don't really know how to name this feature, but I find it quite neccessary<div><br></div><div>In JavaScript land there are many functions with parameters of type boolean, and invocations to these functions do not have high readability, for example jQuery have a `clone` method with a parameter deep of type boolean, but when read a code like:</div><div><br></div><div>```</div><div>$.clone(sourceObject, true);</div><div>```</div><div><br></div><div>it's hard to understand what is that `true` stands for, a more unfamiliar API could make this more uncomfortable:</div><div><br></div><div>```</div><div>control.dispose(true); // does it mean "to remove DOM node or anything else?"</div><div>```</div><div><br></div><div>In practice we can write some comment after a boolean parameter to explain what it is:</div><div><br></div><div>```</div><div>control.dispose(true /* removeNode */);</div><div>```</div><div><br></div><div>but it's a lot of work.</div><div><br></div><div>In this case I think we may introduce a handy syntax called "named true" which only transforms to the keyword `true` but have a custom name:</div><div><br></div><div>```</div><div>control.dispost(:removeNode);</div><div>```</div><div><br></div><div>Here a leading colon hints it is a "named true" so in parsing stage `:removeNode` simply becomes `true`, and we can have a false value with simply `!:removeNode`, it doesn't hit performance but notably increase readability</div><div><br></div><div>Boolean parameters is not good practice but I believe it is not eliminated nowadays and will never be eliminated, so a more friendly syntax could save a lot of time</div><div><br></div><div>---</div><div><br></div><div>Furthermore, there are also many functions accepting an `options` parameter including some "flag properties", flag properties are simple properties with a boolean value, a good example is the {silent: true} flag in many event related APIs.</div><div><br></div><div>Constructing an `options` object containing flag properties are not easy, we may repeat `: true` and `: false` many times, so with previously "named true", I think a "named true property" could help to save time:</div><div><br></div><div>```</div><div>model.set('foo', newValue, {:silent, :disableValidation, !:destroyOldValue})</div><div>```</div><div><br></div><div>Here `:silent` is simply parsed to `silent: true` and `!:destroyOldValue` is for `destroyOldValue: false`, it can save a large amount of code</div><div><br></div><div>All syntax here are just examples, not any propose to grammar</div></div>
<br>_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss</div>                                          </div></body>
</html>