The global object
JavaScript provides a global object which has a set of properties, functions and objects that are accessed globally, without a namespace.
The properties are
InfinityNaNundefined
and the functions are
decodeURI()decodeURIComponent()encodeURI()encodeURIComponent()eval()isFinite()isNaN()parseFloat()parseInt()
The objects are the ones you already saw before, which are part of the standard library:
ArrayBooleanDateFunctionJSONMathNumberObjectRegExpStringSymbol
and errors.
Let’s now describe here the global properties and functions.
Infinity
InfinityInfinity in JavaScript is a value that represents infinity.
Positive infinity. To get negative infinity, use the – operator: -Infinity.
Those are equivalent to Number.POSITIVE_INFINITY and Number.NEGATIVE_INFINITY.
Adding any number to Infinity, or multiplying Infinity for any number, still gives Infinity.
NaN
NaNThe global NaN value is an acronym for Not a Number. It’s returned by operations such as zero divided by zero, invalid parseInt() operations, or other operations.
parseInt() //NaN
parseInt('a') //NaN
0/0 //NaNA special thing to consider is that a NaN value is ever equal to another NaN value. You must use the isNaN() global function to check if a value evaluates to NaN:
NaN === NaN //false
0/0 === NaN //false
isNaN(0/0) //trueundefined
undefinedThe global undefined property holds the primitive value undefined.
Running a function that does not specify a return value returns undefined:
const test = () => {}
test() //undefinedUnlike NaN, we can compare an undefined value with undefined, and get true:
undefined === undefinedIt’s common to use the typeof operator to determine if a variable is undefined:
if (typeof dog === 'undefined') {
}decodeURI()
decodeURI()Performs the opposite operation of encodeURI()
decodeURIComponent()
decodeURIComponent()Performs the opposite operation of encodeURIComponent()
encodeURI()
encodeURI()This function is used to encode a complete URL. It does encode all characters to their HTML entities except the ones that have a special meaning in a URI structure, including all characters and digits, plus those special characters:
~!@#$&*()=:/,;?+-_.
Example:
encodeURI("http://flaviocopes.com/ test/")
//'http://flaviocopes.com/%20test/'encodeURIComponent()
encodeURIComponent()Similar to encodeURI(), encodeURIComponent() is meant to have a different job.
Instead of being used to encode an entire URI, it encodes a portion of a URI.
It does encode all characters to their HTML entities except the ones that have a special meaning in a URI structure, including all characters and digits, plus those special characters:
_.!~*'()
Example:
encodeURIComponent("http://flaviocopes.com/ test/")
//'http%3A%2F%2Fflaviocopes.com%2F%20test%2F'eval()
eval()This is a special function that takes a string that contains JavaScript code, and evaluates / runs it.
This function is very rarely used and for a reason: it can be dangerous.
I recommend to read this article on the subject.
isFinite()
isFinite()Returns true if the value passed as parameter is finite.
isFinite(1) //true
isFinite(Number.POSITIVE_INFINITY) //false
isFinite(Infinity) //falseisNaN()
isNaN()Returns true if the value passed as parameter evaluates to NaN.
isNaN(NaN) //true
isNaN(Number.NaN) //true
isNaN('x') //true
isNaN(2) //false
isNaN(undefined) //trueThis function is very useful because a NaN value is never equal to another NaN value. You must use the isNaN() global function to check if a value evaluates to NaN:
0/0 === NaN //false
isNaN(0/0) //trueparseFloat()
parseFloat()Like parseInt(), parseFloat() is used to convert a string value into a number, but retains the decimal part:
parseFloat('10,000', 10) //10 ❌
parseFloat('10.00', 10) //10 ✅ (considered decimals, cut)
parseFloat('10.000', 10) //10 ✅ (considered decimals, cut)
parseFloat('10.20', 10) //10.2 ✅ (considered decimals)
parseFloat('10.81', 10) //10.81 ✅ (considered decimals)
parseFloat('10000', 10) //10000 ✅parseInt()
parseInt()This function is used to convert a string value into a number.
Another good solution for integers is to call the parseInt() function:
const count = parseInt('1234', 10) //1234Don’t forget the second parameter, which is the radix, always 10 for decimal numbers, or the conversion might try to guess the radix and give unexpected results.
parseInt() tries to get a number from a string that does not only contain a number:
parseInt('10 lions', 10) //10but if the string does not start with a number, you’ll get NaN (Not a Number):
parseInt("I'm 10", 10) //NaNAlso, just like Number it’s not reliable with separators between the digits:
parseInt('10,000', 10) //10 ❌
parseInt('10.00', 10) //10 ✅ (considered decimals, cut)
parseInt('10.000', 10) //10 ✅ (considered decimals, cut)
parseInt('10.20', 10) //10 ✅ (considered decimals, cut)
parseInt('10.81', 10) //10 ✅ (considered decimals, cut)
parseInt('10000', 10) //10000 ✅Last updated
Was this helpful?