为什么一元正号运算符在JavaScript中不改变数值,却影响一元运算符的执行顺序?

2026-04-10 01:131阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计765个文字,预计阅读时间需要4分钟。

为什么一元正号运算符在JavaScript中不改变数值,却影响一元运算符的执行顺序?

《JavaScript基础教程》一元正号一元正号(+)位于操作数前面,用于计算操作数的数值。一元正号运算符(+)位于操作数前面,计算操作数的数值。例如:+5 返回 5如果操作数不是数值,则会尝试将其转换为数值。例如:+ 5 返回 5一元正号也可以用于转换非数值为数值,包括负号。例如:- 5 返回 -5

本文适合JavaScript初学者。

一元正号介绍

一元正号运算符(+)位于其操作数前面,计算其操作数的数值,如果操作数不是一个数值,会尝试将其转换成一个数值。 尽管一元负号也能转换非数值类型,但是一元正号是转换其他对象到数值的最快方法,也是最推荐的做法,因为它不会对数值执行任何多余操作。

为什么一元正号运算符在JavaScript中不改变数值,却影响一元运算符的执行顺序?

转换字符串

一元正号可以用于转换数值字符串为数字,比如如下代码:

+ "123" // 123 + "12.3" // 12.3

也可以转换二进制、16进制数值、自然底数的字符串:

+ "0x11" // 17 + "0b11" // 3 + "1e10" // 10000000000

看起来 和parseFloat功能类似,但是parseFloat支持字符串后面部分不为数字的情况,一元正号却不行,比如:

parseFloat("1px") // 1 + "1px" // NaN

如果是空字符串或者多个空格组成的字符串,一元正号会转换为0,parseFloat 结果为NaN

+ ' ' // 0 parseFloat(' ') // NaN

负数形式字符串也可以转换成数值,但是对于十六进制 二进制不适用,对于自然底数适用(parseFloat 都适用):

+'-123' // 123 + "-0x11" // NaN + "-0b11" // NaN + "-1e10" // -10000000000

转换日期对象

一元正号转换日期对象为数字,得到时间戳,比如如下代码:

+ new Date(); // 1561020101609

相当于如下代码:

new Date().getTime(); // 1561020101609

转换null、undefined、NaN

一元正号会把null转换为0,undefined 转换为NaN。一元正号施加于NaN,结果还是NaN。代码如下:

+ null // 0 + undefined // NaN + NaN // NaN

转换布尔值
一元正号会把true 转换为1,false转换为0:

+ true;// 1 + false;// 0

转换数组

一元正号会把空数组[],转换为0。如果数组只有一个元素,切第一个元素为数字或者字符串,会对第一个元素进行转换,如果有多个元素,返回NaN,代码如下:

+ []// 0 + ['123'] // 123 + [true] // NaN + [1,2] // NaN

总结

一元正号运算符对于数字字符串和日期的转换比较适用。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对自由互联的支持。

本文共计765个文字,预计阅读时间需要4分钟。

为什么一元正号运算符在JavaScript中不改变数值,却影响一元运算符的执行顺序?

《JavaScript基础教程》一元正号一元正号(+)位于操作数前面,用于计算操作数的数值。一元正号运算符(+)位于操作数前面,计算操作数的数值。例如:+5 返回 5如果操作数不是数值,则会尝试将其转换为数值。例如:+ 5 返回 5一元正号也可以用于转换非数值为数值,包括负号。例如:- 5 返回 -5

本文适合JavaScript初学者。

一元正号介绍

一元正号运算符(+)位于其操作数前面,计算其操作数的数值,如果操作数不是一个数值,会尝试将其转换成一个数值。 尽管一元负号也能转换非数值类型,但是一元正号是转换其他对象到数值的最快方法,也是最推荐的做法,因为它不会对数值执行任何多余操作。

为什么一元正号运算符在JavaScript中不改变数值,却影响一元运算符的执行顺序?

转换字符串

一元正号可以用于转换数值字符串为数字,比如如下代码:

+ "123" // 123 + "12.3" // 12.3

也可以转换二进制、16进制数值、自然底数的字符串:

+ "0x11" // 17 + "0b11" // 3 + "1e10" // 10000000000

看起来 和parseFloat功能类似,但是parseFloat支持字符串后面部分不为数字的情况,一元正号却不行,比如:

parseFloat("1px") // 1 + "1px" // NaN

如果是空字符串或者多个空格组成的字符串,一元正号会转换为0,parseFloat 结果为NaN

+ ' ' // 0 parseFloat(' ') // NaN

负数形式字符串也可以转换成数值,但是对于十六进制 二进制不适用,对于自然底数适用(parseFloat 都适用):

+'-123' // 123 + "-0x11" // NaN + "-0b11" // NaN + "-1e10" // -10000000000

转换日期对象

一元正号转换日期对象为数字,得到时间戳,比如如下代码:

+ new Date(); // 1561020101609

相当于如下代码:

new Date().getTime(); // 1561020101609

转换null、undefined、NaN

一元正号会把null转换为0,undefined 转换为NaN。一元正号施加于NaN,结果还是NaN。代码如下:

+ null // 0 + undefined // NaN + NaN // NaN

转换布尔值
一元正号会把true 转换为1,false转换为0:

+ true;// 1 + false;// 0

转换数组

一元正号会把空数组[],转换为0。如果数组只有一个元素,切第一个元素为数字或者字符串,会对第一个元素进行转换,如果有多个元素,返回NaN,代码如下:

+ []// 0 + ['123'] // 123 + [true] // NaN + [1,2] // NaN

总结

一元正号运算符对于数字字符串和日期的转换比较适用。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对自由互联的支持。