JSLint reports unexpected use of '&' and '|' — I'd like to clean this

前端 未结 3 2249

I\'m trying to get my Javascript code 100% JSLint clean.

I\'ve got some JS code that I\'ve lifted from elsewhere to create a UUID. That code has the following line:

相关标签:
3条回答
  • 2021-01-31 14:34

    The reason "why" is that actual bitwise operations are exceedingly rare in JS, and those operators appearing in JS code almost always are a typo for the boolean versions (&&, ||). That's why JSLint cares. This is a legit use of bitwise ops though. I believe you can silence the warning with the bitwise flag:

    /*jslint bitwise: true */
    
    0 讨论(0)
  • 2021-01-31 14:34

    If you're using this javascript lint tool you can specify a configuration file on the command line that specifies which checks to enable/disable.

    For example, I typically invoke mine as follows:

    jsl -conf jsl.conf
    

    with a jsl.conf file that looks like this

    #----------------------------------------------------------------------------
    #
    # This is a slightly edited version of the jsl.default.conf file that comes
    # with the install package for JavaScript Lint.
    #
    #----------------------------------------------------------------------------
    
    #
    # Configuration File for JavaScript Lint 0.3.0
    # Developed by Matthias Miller (http://www.JavaScriptLint.com)
    #
    # This configuration file can be used to lint a collection of scripts, or to
    # enable or disable warnings for scripts that are linted via the command line.
    #
    
    ### Warnings
    # Enable or disable warnings based on requirements.
    # Use "+WarningName" to display or "-WarningName" to suppress.
    #
    -no_return_value              # function {0} does not always return a value
    +duplicate_formal             # duplicate formal argument {0}
    -equal_as_assign              # test for equality (==) mistyped as assignment (=)?{0}
    +var_hides_arg                # variable {0} hides argument
    -redeclared_var               # redeclaration of {0} {1}
    -anon_no_return_value         # anonymous function does not always return a value
    +missing_semicolon            # missing semicolon
    +meaningless_block            # meaningless block; curly braces have no impact
    +comma_separated_stmts        # multiple statements separated by commas (use semicolons?)
    +unreachable_code             # unreachable code
    -missing_break                # missing break statement
    -missing_break_for_last_case  # missing break statement for last case in switch
    -comparison_type_conv         # comparisons against null, 0, true, false, or an empty string allowing implicit type conversion (use === or !==)
    -inc_dec_within_stmt          # increment (++) and decrement (--) operators used as part of greater statement
    +useless_void                 # use of the void type may be unnecessary (void is always undefined)
    +multiple_plus_minus          # unknown order of operations for successive plus (e.g. x+++y) or minus (e.g. x---y) signs
    +use_of_label                 # use of label
    -block_without_braces         # block statement without curly braces
    -leading_decimal_point        # leading decimal point may indicate a number or an object member
    +trailing_decimal_point       # trailing decimal point may indicate a number or an object member
    -octal_number                 # leading zeros make an octal number
    +nested_comment               # nested comment
    -misplaced_regex              # regular expressions should be preceded by a left parenthesis, assignment, colon, or comma
    -ambiguous_newline            # unexpected end of line; it is ambiguous whether these lines are part of the same statement
    -empty_statement              # empty statement or extra semicolon
    -missing_option_explicit      # the "option explicit" control comment is missing
    +partial_option_explicit      # the "option explicit" control comment, if used, must be in the first script tag
    +dup_option_explicit          # duplicate "option explicit" control comment
    +useless_assign               # useless assignment
    -ambiguous_nested_stmt        # block statements containing block statements should use curly braces to resolve ambiguity
    +ambiguous_else_stmt          # the else statement could be matched with one of multiple if statements (use curly braces to indicate intent)
    -missing_default_case         # missing default case in switch statement
    +duplicate_case_in_switch     # duplicate case in switch statements
    +default_not_at_end           # the default case is not at the end of the switch statement
    +legacy_cc_not_understood     # couldn't understand control comment using /*@keyword@*/ syntax
    +jsl_cc_not_understood        # couldn't understand control comment using /*jsl:keyword*/ syntax
    +useless_comparison           # useless comparison; comparing identical expressions
    +with_statement               # with statement hides undeclared variables; use temporary variable instead
    +trailing_comma_in_array      # extra comma is not recommended in array initializers
    +assign_to_function_call      # assignment to a function call
    -parseint_missing_radix       # parseInt missing radix parameter
    
    
    ### Output format
    # Customize the format of the error message.
    #    __FILE__ indicates current file path
    #    __FILENAME__ indicates current file name
    #    __LINE__ indicates current line
    #    __ERROR__ indicates error message
    #
    # Visual Studio syntax (default):
    +output-format __FILE__(__LINE__): __ERROR__
    # Alternative syntax:
    #+output-format __FILE__:__LINE__: __ERROR__
    
    
    ### Context
    # Show the in-line position of the error.
    # Use "+context" to display or "-context" to suppress.
    #
    +context
    
    
    ### Semicolons
    # By default, assignments of an anonymous function to a variable or
    # property (such as a function prototype) must be followed by a semicolon.
    #
    +lambda_assign_requires_semicolon
    
    
    ### Control Comments
    # Both JavaScript Lint and the JScript interpreter confuse each other with the syntax for
    # the /*@keyword@*/ control comments and JScript conditional comments. (The latter is
    # enabled in JScript with @cc_on@). The /*jsl:keyword*/ syntax is preferred for this reason,
    # although legacy control comments are enabled by default for backward compatibility.
    #
    #+legacy_control_comments
    
    
    ### JScript Function Extensions
    # JScript allows member functions to be defined like this:
    #     function MyObj() { /*constructor*/ }
    #     function MyObj.prototype.go() { /*member function*/ }
    #
    # It also allows events to be attached like this:
    #     function window::onload() { /*init page*/ }
    #
    # This is a Microsoft-only JavaScript extension. Enable this setting to allow them.
    #
    -jscript_function_extensions
    
    
    ### Defining identifiers
    # By default, "option explicit" is enabled on a per-file basis.
    # To enable this for all files, use "+always_use_option_explicit"
    -always_use_option_explicit
    
    # Define certain identifiers of which the lint is not aware.
    # (Use this in conjunction with the "undeclared identifier" warning.)
    #
    # Common uses for webpages might be:
    #+define window
    #+define document
    
    
    ### Interactive
    # Prompt for a keystroke before exiting.
    #+pauseatend
    
    
    ### Files
    # Specify which files to lint
    # Use "+recurse" to enable recursion (disabled by default).
    # To add a set of files, use "+process FileName", "+process Folder\Path\*.js",
    # or "+process Folder\Path\*.htm".
    #
    

    P.S. Check out my javascript UUID page which, by the way, passes all of the above JSLint checks. :-)

    0 讨论(0)
  • 2021-01-31 14:38

    Did you give it the bitwise option? That option warns on all uses of bitwise operations, as they tend to be inefficient in Javascript (the native floats need to be converted to ints for the bitwise operation, and then converted back)

    0 讨论(0)
提交回复
热议问题