Loading ...
Sorry, an error occurred while loading the content.

Re: [jslint] Why isn't !! OK?

Expand Messages
  • Douglas Crockford
    ... I have to confess, this code confuses me. What is it intending to do? Could it be made clearer?
    Message 1 of 6 , Feb 1, 2010
    • 0 Attachment
      --- In jslint_com@yahoogroups.com, "iain_dalton" <iain.dalton@...> wrote:

      > var launchIsKeyCode = this.prefs.getBoolPref(this.kbLaunchNames.userIsKeyCode);
      > var charCode = event.charCode;
      > if ((!!charCode) === launchIsKeyCode) {
      > return;
      > }

      I have to confess, this code confuses me.
      What is it intending to do? Could it be made clearer?
    • Michael Lorton
      It seems pellucid to me. It means is the truthiness of charCode the same as the actual truth-value of launchIsKeyCode . In fact, I cannot think of a better
      Message 2 of 6 , Feb 1, 2010
      • 0 Attachment
        It seems pellucid to me. It means "is the truthiness of charCode the same as the actual truth-value of launchIsKeyCode". In fact, I cannot think of a better way to express it. The only obvious variation is

        if (!charCode === !launchIsKeyCode)

        and that isn't exactly equivalent, since it would give a different answer if charCode were truthy and launchIsKeyCode were truthy but not a boolean true.

        M.



        ________________________________
        From: Douglas Crockford <douglas@...>
        To: jslint_com@yahoogroups.com
        Sent: Tue, February 2, 2010 5:44:17 AM
        Subject: Re: [jslint] Why isn't !! OK?

        --- In jslint_com@yahoogroups.com, "iain_dalton" <iain.dalton@...> wrote:

        > var launchIsKeyCode = this.prefs.getBoolPref(this.kbLaunchNames.userIsKeyCode);
        > var charCode = event.charCode;
        > if ((!!charCode) === launchIsKeyCode) {
        > return;
        > }

        I have to confess, this code confuses me.
        What is it intending to do? Could it be made clearer?



        ------------------------------------

        Yahoo! Groups Links



        [Non-text portions of this message have been removed]
      • Jordan
        I don t understand why the logical test can t be: if ((event.charCode && launchIsKeyCode) || (!event.charCode && !launchIsKeyCode)) { You don t need to force a
        Message 3 of 6 , Feb 2, 2010
        • 0 Attachment
          I don't understand why the logical test can't be:

          if ((event.charCode && launchIsKeyCode) || (!event.charCode && !launchIsKeyCode)) {

          You don't need to force a boolean when doing a logical comparison test, and what you want is the opposite of xor - when both are true or both are false. For readability's sake, why not just state both conditions?

          - Jordan

          --- In jslint_com@yahoogroups.com, Michael Lorton <mlorton@...> wrote:
          >
          > It seems pellucid to me. It means "is the truthiness of charCode the same as the actual truth-value of launchIsKeyCode". In fact, I cannot think of a better way to express it. The only obvious variation is
          >
          > if (!charCode === !launchIsKeyCode)
          >
          > and that isn't exactly equivalent, since it would give a different answer if charCode were truthy and launchIsKeyCode were truthy but not a boolean true.
          >
          > M.
          >
          >
          >
          > ________________________________
          > From: Douglas Crockford <douglas@...>
          > To: jslint_com@yahoogroups.com
          > Sent: Tue, February 2, 2010 5:44:17 AM
          > Subject: Re: [jslint] Why isn't !! OK?
          >
          > --- In jslint_com@yahoogroups.com, "iain_dalton" <iain.dalton@> wrote:
          >
          > > var launchIsKeyCode = this.prefs.getBoolPref(this.kbLaunchNames.userIsKeyCode);
          > > var charCode = event.charCode;
          > > if ((!!charCode) === launchIsKeyCode) {
          > > return;
          > > }
          >
          > I have to confess, this code confuses me.
          > What is it intending to do? Could it be made clearer?
          >
          >
          >
          > ------------------------------------
          >
          > Yahoo! Groups Links
          >
          >
          >
          > [Non-text portions of this message have been removed]
          >
        Your message has been successfully submitted and would be delivered to recipients shortly.