Proposal: Boolean.parseBoolean

段垚 duanyao at ustc.edu
Fri Mar 17 02:08:56 UTC 2017



在 2017/3/17 5:03, Ben Newman 写道:
> Just to check my understanding, would
>
>   Boolean.parseBoolean = function (value) {
>     return !! (value && JSON.parse(String(value)));
>   };
>
> be a reasonable polyfill for your proposed function?
This implemention throws for invalid JSON syntax and is case-sensitive 
(Java's counterpart is case-insensitive). Is this better?
```
Boolean.parseBoolean = function (value) {
   return !(!value || /^false$/i.test('' + value));
};
```

However I'm not sure this is widely useful. If the value is not from 
JSON, there are a lot of alternatives for 'true|false', e.g. 'yes|no', 
'on|off', or 'T|F', and different rules for casing/empty value/invalid 
syntax. So it's better to do this in users' code.

>
> This would definitely be useful for parsing `process.env.*` 
> environment variables in Node!
>
> Ben
>
> On Thu, Mar 16, 2017 at 4:55 PM Dmitry Soshnikov 
> <dmitry.soshnikov at gmail.com <mailto:dmitry.soshnikov at gmail.com>> wrote:
>
>     Similar to `Number.parseInt`, the `Boolean.parseBooelan` might be
>     useful for "boolean strings" retrieved from some string-based
>     storages, which do not support other types at serialization.
>
>     ```
>     Boolean.parseBoolean('true'); // true
>     Boolean.parseBoolean('false'); // false
>     ```
>
>     This is to contrast current:
>
>     ```
>     Boolean('false'); // true
>     ```
>
>     In JS people do today:
>
>     ```
>     let shouldRefresh = (data.shouldRefresh === 'true');
>     ```
>
>     Other parsing results:
>
>     ```
>     Boolean.parseBoolean('1'); // true
>     Boolean.parseBoolean(1); // true
>     Boolean.parseBoolean(<not-falsey>); // true
>     Boolean.parseBoolean(true); // true
>
>     // Falsey:
>     Boolean.parseBoolean('0'); // false
>     Boolean.parseBoolean(''); // false
>     Boolean.parseBoolean(false); // false
>     ```
>
>     The API, and the results are from Java's corresponding
>     `Boolean.parseBoolean` method:
>     https://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html#parseBoolean(java.lang.String)
>     <https://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html#parseBoolean%28java.lang.String%29>.
>
>     Dmitry
>     _______________________________________________
>     es-discuss mailing list
>     es-discuss at mozilla.org <mailto: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/20170317/6a8dc7f6/attachment.html>


More information about the es-discuss mailing list