Skip to content
电脑工程师入门

电脑工程师入门

create tomorrow, create happiness

  • 实用软件教程
    • Excel
    • WordPress
    • Powerpoint
    • PowerApps
    • PowerAutomateDesk
  • 计算机语言入门
    • PHP
    • Bootstrap
    • JavaScript
    • Python
    • HTML
    • WordPress
  • 咨询
  • Home
  • JavaScript
  • 第二十章 全局函数
  • HOME
  • JavaScript
  • 第二十章 全局函数

第二十章 全局函数

JavaScript

全局函数是在全局对象中定义的函数。它可以随时从 JavaScript 程序中调用和使用。本节说明如何使用作为全局函数提供的函数。

目录

20-1 parseInt 函数(将字符串转换为整数)
20-2 parseFloat 函数(将字符串转换为浮点数)
20-3 isNaN 函数(检查值是否为 NaN)
20-4 isFinite 函数(检查一个值是有限的还是无限的)
20-5 eval 函数(执行指定为字符串的代码)
20-6 encodeURI 函数/encodeURIComponent 函数(编码 URI)

20-1 parseInt 函数(将字符串转换为整数)

parseInt 是 JavaScript 的全局函数之一,返回一个从字符串转换为整数的值。如果目标值不是字符串,则将其转换为字符串,然后再转换为整数。这里我们解释如何使用 parseInt 函数。

※Number 对象有一个 Number.parseInt 方法,其作用与全局函数的 parseInt 函数相同。

如何使用 parseInt 函数

全局函数之一,parseInt 函数,返回一个从字符串转换为整数的值。格式如下。

parseInt(字符串 [, 基数])

将第一个参数中指定的字符串转换为整数。如果参数不是字符串,则将其转换为字符串,然后再转换为整数。可选的第二个参数允许您指定整数基数(十进制数为 10)。指定 2 到 36 之间的数字。

字符串到整数的转换如下:(1) 从字符串中删除前导空格。(2) 开头有’+’或’-‘的,按符号处理。(3) 将字符串直到非数字的字符转换为整数。除了数字之外,被视为数字的字符是在第二个参数中指定大于或等于 10 的数字作为基数时使用的字母(指定十六进制数字时为 A 到 F)。

如果第一个字符无法转换为数字,则返回 NaN。

看看下面的示例。

parseInt('14', 10);
>> 14
parseInt('  -128Color', 10);
>> -128
parseInt('3FDCKA', 16);
>> 16348
parseInt('Good80', 10);
>> NaN

即使字符串是数字,比如以2为底,如果开头写了0和1以外的数字,也会是NaN。

parseInt('101', 2);
>> 5
parseInt('310', 2);
>> NaN

如果没有指定基数,如果字符串以’0x’或’0X’开头则假设基数为16;否则假设基数为10。

parseInt('0x20');
>> 32

parseInt('20');
>> 20

20-2 parseFloat 函数(将字符串转换为浮点数)

parseFloat 是 JavaScript 的全局函数之一,返回将字符串转换为浮点数得到的值。如果目标值不是字符串,则将其转换为字符串,然后再转换为浮点数。这里我们解释如何使用 parseFloat 函数。

※ Number对象有一个Number.parseFloat方法,作用和全局函数的parseFloat函数一样。

如何使用 parseFloat 函数

全局函数之一,parseFloat 函数,返回一个从字符串转换为浮点数的值。格式如下。

parseFloat(字符串)

将参数中指定的字符串转换为浮点数。如果参数不是字符串,则将其转换为字符串,然后再转换为浮点数。

字符串到浮点数的转换如下:(1) 从字符串中删除前导空格。(2) 开头有’+’或’-‘的,按符号处理。(3) 将字符串直到不是数字的字符转换为浮点数。除了数字之外,被认为是数字的字符是点 (.) 和代表指数的 e 或 E。但是,第二次的点(.)不被视为数字。

如果第一个字符无法转换为数字,则返回 NaN。

看看下面的示例。

parseFloat("14");
>> 14

parseFloat('  3.1415Data');
>> 3.1415

parseFloat('5.8e-3');
>> 0.0058
parseFloat('Good2000');
>> NaN

与 parseInt 函数不同,paseFloat 函数不会将以 0x 或 0X 开头的字符识别为十六进制字符。在这种情况下,考虑数字 0 和非数字“x”。

parseFloat('0x44F2');
>> 0
parseFloat('3A4B');
>> 3

20-3 isNaN 函数(检查值是否为 NaN)

IsNaN 是 JavaScript 的全局函数之一,它检查目标值是否为 NaN(非数字)并返回 true 或 false。在这里,我将解释如何使用 isNaN 函数。

※ 与isNaN全局函数类似,Number对象提供了Number.isNaN方法,更严格的检查是否为NaN。

如何使用 isNaN 函数

全局函数之一,isNaN 函数,通过检查目标值是否为 NaN 来返回 true 或 false。格式如下。

isNaN(值)

检查参数中指定的值是否为 NaN。如果该值不是数值类型,则首先将其转换为数值类型,然后再进行检查。

※ NaN 是全局对象的属性之一,表示 Not A Number。

NaN是一个特殊的值,即使你用==或===判断它是否等于NaN本身,它也是假的,所以你不能用判断判断它是否是NaN。这就是我们使用 isNaN 函数的原因。

console.log(NaN == NaN);
>> false
console.log(NaN === NaN);
>> false
isNaN(NaN);
>> true

使用 isNaN 函数时,如果将 NaN 以外的值而非数字指定为参数,则将其转换为数字,然后检查它是否为 NaN。看下面的例子看看什么值是NaN。

该数字将是错误的。Infinity,它是全局对象的一个​​属性,表示无穷大,也是假的。

isNaN(10);
>> false
isNaN(Infinity);
>> false

字符串为真,但仅由数字和空字符串组成的字符串转换为数字时为假。

isNaN('Hello');  // 转换为数字时结果为NaN
>> true

isNaN('24old');  // 转换为数字时结果为NaN
>> true

isNaN('72');  // 转换为数字时结果为72
>> false

isNaN('');  // 转换为数字时结果为0
>> false

true转为数字时为1,false转为数字时为0,null为false是因为转为数字时为0。true 因为 undefined 在转换为数字时会转换为 NaN。

isNaN(true);  // 转换为数字时结果为 1
>> false

isNaN(false);  // 转换为数字时结果为0
>> false

isNaN(null);  // 转换为数字时结果为0
>> false

isNaN(undefined);  // 转换为数字时结果为NaN
>> true

如果值是对象类型则不同。

isNaN([10]);  // 转换为数字时结果为10
>> false

isNaN([10, 20]);  // 转换为数字时结果为NaN
>> true

isNaN([]);  // 转换为数字时结果为0
>> false

isNaN({a:'10'});  // 转换为数字时结果为NaN
>> true

注意isNaN函数不检查目标值是否为数字,而是在转换为数字时检查目标值是否为NaN。

20-4 isFinite 函数(检查一个值是有限的还是无限的)

IsFinite 是 JavaScript 的全局函数之一,它检查目标值是有限的还是无限的,并返回 true 或 false。在这里,我将解释如何使用 isFinite 函数。

※  Number对象有类似全局函数isFinite的Number.isFinite方法。

如何使用 isFinite 函数

全局函数之一,isFinite 函数,检查目标值是有限的还是无限的,如果该值是有限的,则返回 true。格式如下。

isFinite(值)

检查参数中指定的值是否为有限值。如果值为 NaN、正无穷大 (Infinity)、负无穷大 (-Infinity),则返回 false,否则返回 true。如果该值不是数值类型,则首先将其转换为数值类型,然后再进行检查。

看看下面的示例。如果值为 NaN 、正无穷大 ( Infinity ) 或负无穷大 ( -Infinity ),则为 false。

isFinite(Infinity);
>> false
isFinite(-Infinity);
>> false
isFinite(NaN);
>> false

一个不是无限的数字是一个有限的数字。

isFinite(16);
>> true
isFinite(0);
>> true
isFinite(-6.4);
>> true

一个字符串为假,但是只有数值组成的字符串和一个空字符串转换为数值时为真。

isFinite('Hello');  // 转换为数字的结果为NaN
>> false

isFinite('78');  // 转换为数字的结果为78
>> true

isFinite('');  // 转换为数字的结果为0
>> true

true转为数字时转为1,false转为数字时转为0,null转为数字时转为0,所以为true。undefined 为 false,因为它在转换为数字时会转换为 NaN。

isFinite(true);  // 转换为数字的结果为1
>> true
isFinite(null);  // 转换为数字的结果为0
>> true
isFinite(undefined);  // 转换为数字的结果为NaN
>> false

如果值是对象类型则不同。

isFinite([10]);  // 转换为数字的结果为10
>> true
isFinite([10, 20]);  // 转换为数字的结果为NaN
>> false
isFinite([]);  // 转换为数字的结果为0
>> true
isFinite({a:'10'});  // 转换为数字的结果为NaN
>> false

请注意,全局函数 isFinite 在将目标值转换为数字后检查目标值是有限的还是无限的。

20-5 eval 函数(执行指定为字符串的代码)

eval 是 JavaScript 的全局函数之一,它执行指定为字符串的 JavaScript 代码作为参数。这里我们将解释如何使用 eval 函数。

eval使用评估函数

全局函数之一,eval 函数,执行在其参数中指定为字符串的 JavaScript 代码。格式如下。

eval(要执行的代码)

在参数中将表达式或语句作为字符串写入。eval 函数返回最后计算的表达式的值。

看看下面的示例。

let str = 'x * y + 10';
let x = 8;
let y = 5;
let z = eval(str);
console.log(z);
>> 50

执行 eval 函数时,它会计算字符串参数表示的表达式。评估结果分配给变量 z。

类似的示例,但略有修改。

let str = 'z = x * y + 10;console.log(z)';
let x = 8;
let y = 5;
let z;
eval(str);
>> 50

执行 eval 函数时,它会执行由指定为参数的字符串表示的代码。运算结果赋值给变量z,然后将变量z的值输出到控制台。

通过以这种方式使用 eval 函数,您可以评估由指定为参数的字符串表示的表达式或执行语句。

eval 函数现在已经过时了,但在过去它似乎被用来将表示为字符串的 JSON 文本转换为对象。

let json = "{'name':'Yuhua', 'old':'28'}";
let obj = eval('(' + json + ')');
eval(obj);
>> 50

使用eval函数时的注意事项

由于 eval 函数是可以执行由作为参数指定的字符串表示的代码的函数,因此编写将其他用户输入的值作为字符串接收并将其传递给 eval 函数的过程是非常危险的。可以执行其他用户输入的任意代码。

还有执行速度慢等其他缺点,目前也有eval函数的替代方案,所以eval函数好像用的不多。

不是不能用,所以请在充分考虑前面提到的危险性后,必要时使用。

20-6 encodeURI 函数/encodeURIComponent 函数(编码 URI)

JavaScript 的全局函数之一 encodeURI 对给定 URI 中的特殊字符进行编码。encodeURIComponent 还对指定为参数的 URI 中使用的字符串中的特殊字符进行编码。本节介绍如何使用 encodeURI 和 encodeURIComponent 函数。

如何使用 encodeURI 函数

全局函数之一,encodeURI 函数,对指定为参数的字符串中的特殊字符进行编码。格式如下。

encodeURI(strURI)

指定参数的目标字符串。返回一个新字符串,该字符串对字符串中的特殊字符进行编码。

encodeURI 函数对除以下字符以外的所有字符进行编码:(字母数字字符为 A-Z、a-z 和 0-9)。例如,所有日文字符都经过编码。

英数字 - _ . ! ~ * ' ( ) # ; , / ? : @ & = + $ 

encodeURI 函数是用于在参数字符串中指定整个 URI(例如 https://www.example.com/ 等)的函数。因此,不对 URI 中具有特殊含义的 / 和 & 等字符进行编码。因此,当参数的值中包含 & 字符时,就会出现问题。

看看下面的示例。

let uri = 'https://www.example.com/微博/park.html'
console.log(encodeURI(uri));
>> https://www.example.com/%E5%BE%AE%E5%8D%9A/park.html

let uri = 'https://www.example.com/公园.html?place=sea&park'
console.log(encodeURI(uri));
>>https://www.example.com/%E5%85%AC%E5%9B%AD.html?place=sea&park

像第一个 URI 这样的情况没有问题,但是在像第二个 URI 这样的参数中包含 & 作为值的情况下,它没有被 encodeURI 函数编码,因此不能使用。在这种情况下,使用仅对参数值进行编码的 encodeURIComponent 函数。

如何使用 decodeURI 函数

要解码由 encodeURI 函数编码的内容,请使用全局函数之一,即 decodeURI 函数。格式如下。

decodeURI(strEncodedURI)

为参数指定目标编码字符串。返回值是一个新字符串,用于解码由 encodeURI 函数编码的字符。

看看下面的示例。

let encodedURI = 'https://www.example.com/%E5%BE%AE%E5%8D%9A/park.html'
console.log(decodeURI(encodedURI));
>> https://www.example.com/微博/park.html

我能够来回解码编码的 URI。

如何使用 encodeURIComponent 函数

全局函数之一,encodeURIComponent 函数,对指定为参数的字符串中的特殊字符进行编码。格式如下。

encodeURIComponent(str)

指定参数的目标字符串。返回一个新字符串,该字符串对字符串中的特殊字符进行编码。

encodeURIComponent 函数对除以下字符以外的所有字符进行编码:(字母数字字符为 A-Z、a-z 和 0-9)。例如,所有日文字符都经过编码。

英数字 - _ . ! ~ * ' ( )

encodeURIComponent 函数还对 encodeURI 函数未编码的以下字符进行编码。

# ; , / ? : @ & = + $ 

encodeURIComponent 函数是在参数字符串中仅指定 URI 中包含的参数部分时使用的函数。因此像 & 这样的字符也会被编码。如果您将整个 URI 字符串指定为参数,它将被编码为包括 /,这是一个问题。

看看下面的示例。

let uri = 'https://www.example.com/公园.html?';
let para = 'place=sea&park'
console.log(encodeURIComponent(para));
>> place%3Dsea%26park

encodeURIComponent 函数也对 & 进行编码,因此如果参数中的值包含 & 等,它将返回编码后的值。

请看另一个例子。

let uri = 'https://www.example.com/微博/park.html'
console.log(encodeURIComponent(uri));
>> https%3A%2F%2Fwww.example.com%2F%E5%BE%AE%E5%8D%9A%2Fpark.html

如果表示 URI 的整个字符串被指定为参数,它将被编码为包括冒号 (:) 和斜杠 (/)。在这种情况下使用 encodeURI 函数。

如何使用 decodeURIComponent 函数

要解码由 encodeURIComponent 函数编码的内容,请使用全局函数之一,即 decodeURIComponent 函数。格式如下。

decodeURIComponent(strEncoded)

为参数指定目标编码字符串。返回一个新字符串,该字符串解码由 encodeURIComponent 函数编码的字符。

看看下面的示例。

let strEncode = 'place%3Dsea%26park'
console.log(decodeURIComponent(strEncode));
>> place=sea&park

我能够解码编码的字符串并将其取回。

标签:JavaScript

文章导航

❮ Previous Post: 第十九章 正则表达式的图案
Next Post: 第二十一章 日期对象 ❯

关联内容

JavaScript
第二章将JavaScript写到HTML编码中
JavaScript
第一章 在浏览器中启用 JavaScript
JavaScript
第三章 JavaScript 基础知识
JavaScript
第四章 JavaScript的数值
JavaScript
第五章 長整数
JavaScript
第六章 字符串的基础

实用软件教程

  • Powerpoint
  • Excel
  • PowerAutomateDesk
  • Wordpress
  • Powerapps

编程语言入门

  • JavaScript
  • HTML
  • PHP
  • Python
  • Bootstrap

Copy right by flashyonder.com