javascript 预定义(系统内置)函数

80 阅读3分钟

parseInt()

将收到的输入值转换为整形输出,若转换失败则返回NaN

  • parseInt(string, radix)
  • 第一个参数为必填项,要被解析的值,通常为一个以整数开头的字符串。如果参数不是字符串,则将其转换为字符串,开头有空白符也会被忽略。
  • 第二个参数为可选项,负责设定函数期望的数字类型,即进制的基数(2,8,10,16等从2~36的整数)。假如指定0或未指定,基数将会根据字符串的值进行推算。
parseInt("0xF", 16) //15
parseInt(15.99, 10) //15
parseInt("1abc") //1
parseInt("-15e1", 10) //-15
parseInt("hello") //NaN
parseInt("546", 2) //NaN,除“0,1”外其他数字都不是有效的二进制数字

如果parseInt遇到的字符不是指定raidx中的数字,将忽略该字符和所有后续字符,返回已解析的整数值

parseFloat()

解析一个参数并转换为浮点数

parseFloat("0.0314E+2") //3.14
parseFloat("3.14some ") //3.14
parseFloat({toString: function() { return "3.14" }}) //3.14
parseFloat("ff") //NaN
parseFloat(900238291038471920n) //900719925474099300整数太大以至于不能被转换时将失去精度
parseFloat(Infinity) //Infinity 无限大

isNaN()

  • 确定值是否为NaN,是否可以参与算数运算,返回true/false
  • 将某些不能强制转换为数值的非数值转换为数值或算术运算返回一个未定义/无法表示的值时,将会产生NaN
  • NaN不能通过相等操作符(==和===)判断,NaN == NaN, NaN === NaN都会返回false
isNaN(NaN); isNaN(undefined); isNaN({}) // true
isNaN(true); isNaN(null); isNaN("") // false
isNaN("37") //false 可以被转换为数值37
isNaN("123abc") //true parseInt("123abc")为123,但Number("123abc")结果是NaN

isFinite()

判断参数值是否为一个有限数值,必要情况下,参数会首先转为一个数值

isFinite(Infinity); isFinite(NaN); isFinite(-Infinity) //false
isFinite(2e64) //true 但在更强壮的Number.isFinite()中返回false
isFinite("0") //true Number.isFinite("0")返回false

URL的编码和反编码

  • encodeURI() 将特定字符替换为转义序列来对统一资源标识符(URI)进行编码
  • encodeURIComponent() 将特定字符的每个实例替换为代表字符的UTF-8编码的转义序列来编码URI。与encodeURI相比,此函数会编码更多的字符,包括URI语法的一部分
encodeURIComponent 不转义字符:
A-Z a-z 0-9 - _ . ! ~ * ' ()
  • decodeURI() 解码由encodeURI创建或其他流程的得到统一资源标识符
  • decodeURIComponent() 解码由encodeURIComponent或其他类似方法编码的部分统一资源标识符

eval()

将传入的一个表示javaScript表达式、语句或一系列语句的字符串当做JavaScript代码进行执行,返回字符串中代码的返回值,如返回值为空,则返回undefined

`eval()` 是一个危险的函数,它使用与调用者相同的权限执行代码,通常比其他替代方法更慢,因为它必须调用 JS 解释器,而许多其他结构则可被现代 JS 引擎进行优化。