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

Re: [jslint] Just got confused with the `?` operator

Expand Messages
  • Felix E. Klee
    ... I know. Still the error slipped in, out of sloppiness, like many errors that JSLint is designed to capture.
    Message 1 of 8 , Feb 5, 2013
    • 0 Attachment
      On Tue, Feb 5, 2013 at 6:30 PM, Keradus <keradus@...> wrote:
      > It's a matter of priority.

      I know. Still the error slipped in, out of sloppiness, like many errors
      that JSLint is designed to capture.
    • george_weilenmann
      This is more of an error on the part of the knowledge of the developer then on the part of JSLint. The code pattern is perfectly valid and not confusing to
      Message 2 of 8 , Feb 5, 2013
      • 0 Attachment
        This is more of an error on the part of the knowledge of the developer
        then on the part of JSLint. The code pattern is perfectly valid and not
        confusing to someone who has a good grasp on operator precedence.
        even if JSLint was to require () around the ternary operator and
        results.
        Such that your line
        for (i = 0; i < isOneWayFlight ? 1 : 2; i += 1) {
        would have thrown an error for missing () around ternary.You still could
        have done
        for (i = 0; (i < isOneWayFlight ? 1 : 2); i += 1) {
        and the same error would have occurred in your logic.
        See http://www.javascriptkit.com/jsref/precedence_operators.shtml for a
        nice table on precedence of operators.


        --- In jslint_com@yahoogroups.com, "Felix E. Klee" wrote:
        >
        > On Tue, Feb 5, 2013 at 6:30 PM, Keradus wrote:
        > > It's a matter of priority.
        >
        > I know. Still the error slipped in, out of sloppiness, like many
        errors
        > that JSLint is designed to capture.
        >



        [Non-text portions of this message have been removed]
      • Felix E. Klee
        On Tue, Feb 5, 2013 at 11:17 PM, george_weilenmann ... Exactly not. I m a C programmer for more than 20 years, and I m well versed with
        Message 3 of 8 , Feb 5, 2013
        • 0 Attachment
          On Tue, Feb 5, 2013 at 11:17 PM, george_weilenmann <abyssoft@...>
          wrote:
          > This is more of an error on the part of the knowledge of the developer

          Exactly not. I'm a C programmer for more than 20 years, and I'm well
          versed with its operator precedence, which is similar to that of
          JavaScript. I frequently use the `?` operator, and without any issues.

          I just wanted to point out what happened to me today. That's all.
        • douglascrockford
          ... Thanks. Please try it now.
          Message 4 of 8 , Feb 5, 2013
          • 0 Attachment
            --- In jslint_com@yahoogroups.com, "Felix E. Klee" wrote:
            > /*jslint devel: true */
            >
            > (function () {
            > 'use strict';
            >
            > var isOneWayFlight = true, i;
            >
            > for (i = 0; i < isOneWayFlight ? 1 : 2; i += 1) {
            > console.log(i);
            > }
            > }());
            >
            > Instead, the runtime enters an infinite loop. It outputs: 0, 1, 2, ...
            >
            > Correct version of the for statement, doing what I want:
            >
            > for (i = 0; i < (isOneWayFlight ? 1 : 2); i += 1) {
            > console.log(i);
            > }


            Thanks. Please try it now.
          • george_weilenmann
            Nice compromise. Works great and indeed improves readability.
            Message 5 of 8 , Feb 5, 2013
            • 0 Attachment
              Nice compromise. Works great and indeed improves readability.

              --- In jslint_com@yahoogroups.com, "Felix E. Klee" wrote:
              >
              > Well, today I'm not in good shape, and I expected the following code to
              > output just one zero. The code passes JSLint.
              >
              > /*jslint devel: true */
              >
              > (function () {
              > 'use strict';
              >
              > var isOneWayFlight = true, i;
              >
              > for (i = 0; i < isOneWayFlight ? 1 : 2; i += 1) {
              > console.log(i);
              > }
              > }());
              >
              > Instead, the runtime enters an infinite loop. It outputs: 0, 1, 2, ...
              >
              > Correct version of the for statement, doing what I want:
              >
              > for (i = 0; i < (isOneWayFlight ? 1 : 2); i += 1) {
              > console.log(i);
              > }
              >
              > That's just FYI.
              >
            • Felix E. Klee
              ... So quick - thanks! :-)
              Message 6 of 8 , Feb 7, 2013
              • 0 Attachment
                On Wed, Feb 6, 2013 at 3:47 AM, douglascrockford <douglas@...> wrote:
                > Please try it now.

                So quick - thanks! :-)
              Your message has been successfully submitted and would be delivered to recipients shortly.