JavaScript提供了一个全局对象,它有一组属性、函数和对象,可以全局访问,没有命名空间。
这些属性是。
InfinityNaNundefined
函数是。
decodeURI()decodeURIComponent()encodeURI()encodeURIComponent()eval()isFinite()isNaN()parseFloat()parseInt()
这些是对象。
和错误。
ErrorEvalErrorRangeErrorReferenceErrorSyntaxErrorTypeErrorURIError
我在这个JavaScript错误参考文章中描述了错误。
现在让我们在这里描述一下全局属性和函数。
Infinity
Infinity 在JavaScript中是一个代表无限的值。
正的无穷大。要得到负无穷大,可以使用– 操作符:-Infinity 。
这些等同于Number.POSITIVE_INFINITY 和Number.NEGATIVE_INFINITY 。
将任何数字加到Infinity ,或将任何数字乘以Infinity ,仍然可以得到Infinity 。
NaN
全局NaN 值是Not a Number 的缩写。它是由零除以零、无效的parseInt()操作或其他操作返回的。
parseInt() //NaN
parseInt('a') //NaN
0/0 //NaN
一个需要特别考虑的问题是,一个NaN 的值永远不会等于另一个NaN 的值。你必须使用isNaN() 全局函数来检查一个值是否被评估为NaN 。
NaN === NaN //false
0/0 === NaN //false
isNaN(0/0) //true
undefined
全局undefined 属性持有原始值undefined 。
运行一个没有指定返回值的函数会返回undefined 。
const test = () => {}
test() //undefined
与NaN 不同,我们可以将一个undefined 值与undefined 进行比较,并得到 true。
通常使用typeof 操作符来确定一个变量是否是未定义的。
if (typeof dog === 'undefined') {
}
decodeURI()
执行的是 "A "的相反操作。encodeURI()
decodeURIComponent()
执行与之相反的操作encodeURIComponent()
encodeURI()
这个函数被用来对一个完整的URL进行编码。它确实将所有的字符编码为它们的HTML实体,除了那些在URI结构中具有特殊含义的字符,包括所有的字符和数字,再加上那些特殊字符。
~!@#$&*()=:/,;?+-_.
例子。
encodeURI("http://flaviocopes.com/ hey!/")
//"http://flaviocopes.com/%20hey!/"
encodeURIComponent()
与encodeURI() 相似,encodeURIComponent() 是为了有一个不同的工作。
它不是用来对整个URI进行编码,而是对URI的一部分进行编码。
除了在URI结构中具有特殊意义的字符外,它确实将所有的字符编码为HTML实体,包括所有的字符和数字,以及那些特殊字符。
-_.!~*'()
例子。
encodeURIComponent("http://www.example.org/a file with spaces.html")
// "http%3A%2F%2Fwww.example.org%2Fa%20file%20with%20spaces.html"
eval()
这是一个特殊的函数,它接收一个包含JavaScript代码的字符串,并对其进行评估/运行。
这个函数很少使用,这是有原因的:它可能是危险的。
我建议阅读这篇关于这个问题的文章。
isFinite()
如果作为参数传递的值是有限的,返回真。
isFinite(1) //true
isFinite(Number.POSITIVE_INFINITY) //false
isFinite(Infinity) //false
isNaN()
如果作为参数传递的值被评估为NaN ,则返回true。
isNaN(NaN) //true
isNaN(Number.NaN) //true
isNaN('x') //true
isNaN(2) //false
isNaN(undefined) //true
这个函数非常有用,因为一个NaN 值永远不等于另一个NaN 值。你必须使用isNaN() 全局函数来检查一个值是否被评估为NaN 。
0/0 === NaN //false
isNaN(0/0) //true
parseFloat()
与parseInt() 一样,parseFloat() 用于将一个字符串值转换为数字,但保留小数部分。
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() 函数。
const count = parseInt('1234', 10) //1234
不要忘了第二个参数,也就是小数点,对于小数来说总是10,否则转换可能会试图猜测小数点,并给出意外的结果。
parseInt() 试图从一个不只包含数字的字符串中获得一个数字。
parseInt('10 lions', 10) //10
但如果字符串不是以数字开头,你会得到NaN (不是数字)。
parseInt("I'm 10", 10) //NaN
另外,就像Number一样,它在数字之间的分隔符也不可靠。
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 ✅