JSLint says “missing radix parameter”; what should I do?
Problem at line 32 character 30: Missing radix parameter.
This is the code in question:
imageIndex = parseInt(id.substring(id.length – 1))-1;
What is wrong here?
It always a good practice to pass radix with parseInt –
For decimal –
parseInt(id.substring(id.length - 1), 10)
- If the string begins with “0x”, the radix is 16 (hexadecimal)
- If the string begins with “0”, the radix is 8 (octal). This feature is deprecated
- If the string begins with any other value, the radix is 10 (decimal)
I’m not properly answering the question but, I think it makes sense to clear why we should specify the radix.
On MDN documentation we can read that:
- If the input string begins with “0”, radix is eight (octal) or 10 (decimal). Exactly which radix is chosen is implementation-dependent. ECMAScript 5 specifies that 10 (decimal) is used, but not all browsers support this yet. For this reason always specify a radix when using parseInt.
Source: MDN parseInt()
To avoid this warning, instead of using:
You may replace it by:
Note that parseInt and Number have different behaviors, but in some cases, one can replace the other.
You can turn off this rule if you wish to skip that test.
Under the “
rules” property in the
It’s not recommended to do that if you don’t understand this exception.
Adding the following on top of your JS file will tell JSHint to supress the radix warning:
/*jshint -W065 */
See also: http://jshint.com/docs/#options
I solved it with just using the +foo, to convert the string.
Keep in mind it’s not great for readability (dirty fix).
console.log( +'1' ) // 1 (int)