本文适合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
总结
一元正号运算符对于数字字符串和日期的转换比较适用。
欢迎关注公众号“ITman彪叔”。彪叔,拥有10多年开发经验,现任公司系统架构师、技术总监、技术培训师、职业规划师。熟悉Java、JavaScript。在计算机图形学、WebGL、前端可视化方面有深入研究。对程序员思维能力训练和培训、程序员职业规划和程序员理财投资有浓厚兴趣。
ITman彪叔公众号
相关推荐
JavaScript中的“一元正号运算符”(+)是一个简单的但功能强大的运算符,它可以用于提升操作数的数值,特别是当处理数据类型转换时。在本文中,我们将深入探讨一元正号运算符的工作原理,以及它如何在不同场景下...
21. `+` 一元正号运算符 22. `*` 解引用运算符 23. `&` 取地址运算符 24. `left->*` 指向成员选择的指针运算符 25. `left.*` 指向成员选择的指针运算符 26. `*` 乘法运算符 27. `/` 除法运算符 28. `%` 取模运算符 ...
* 一元算术运算符需要一个操作数,包括正号和负号两种运算符。 * 算术运算符的优先级从高到低依次是:一元算术运算符、乘法、除法、取余、加法和减法。 * 运算符的结合性决定了表达式的计算顺序。 * C语言中的实现...
* 正号运算符:+aa的值 * 负号运算符:-aa的算术负值 * 自增运算符:++i在使用i之前,先使i的值加1 * 自减运算符:--i在使用i之前,先使i的值减1 * 求余运算符:%a%ba除以b的余数 二元运算符 二元运算符是指需要两...
单目运算符的优先级次之,包括逻辑非、按位取反、预增量、预减量、负号、正号、dereference和地址运算符。例如: * 逻辑非:if( !done ) ... * 按位取反:flags = ~flags; * 预增量:for( i = 0; i ; ++i ) ... * ...
2. **一元运算符**:包括逻辑非`!`、按位取反`~`、前缀增量`++`、前缀减量`--`、正号`+`、负号`-`、类型转换`(类型)`、取地址`&`和求大小`sizeof`。 - **逻辑非`!`**:对布尔值取反。 - **按位取反`~`**:对二进制...
1. **一元运算符**:仅作用于一个操作数。如 `!` (逻辑非)、`~` (按位非)、`++` (前增)、`--` (前减)、`+` (正号)、`-` (负号)、`*` (间接)、`&` (取地址)、`(类型)` (类型转换) 和 `sizeof` (求对象或类型大小)。 2...
一元运算符包括`++`和`--`,用于自增和自减;二元运算符有`+`、`-`、`*`、`/`,用于加、减、乘、除;三元运算符`? :`用于条件判断。算术运算符还包括模运算符 `%`,用于求余数。负号运算符 `-`和正号运算符 `+`则...
- `+`:正号运算符,一般用作无操作。 - `-`:负号运算符,将数值变为相反数。 - `(类型)`:类型转换运算符,将一种类型转换为另一种类型。 - `*`:指针运算符,用于解引用指针,获取指针所指向的值。 - `&`:...
2. **一元运算符** (第2级,右结合) - `!`逻辑非运算符,将布尔值反转。 - `~`按位取反运算符,对整数进行位操作,每个位取反。 - `++`前缀增量运算符,增加变量的值。 - `--`前缀减量运算符,减少变量的值。 -...
一元运算符如正号 (+)、负号 (-)、自增 (++) 和自减 (--),它们作用于单个操作数。二元运算符如加 (+)、减 (-)、乘 (*)、除 (/) 和取余 (%),它们作用于两个操作数。自增和自减运算符有前置和后置两种形式,例如 `i+...
- **-/+** (负/正号): 用于表示数值的符号。 - 示例: `int i = -1;` 定义负数。 - 示例: `int i = +1;` 定义正数。 - **\*** (取址运算符): 返回变量的地址。 - 示例: `data = *ptr;` 获取指针 `ptr` 指向的...
- `+`:正号运算符,通常无实际作用,但可以用于明确表示正数。 - `-`:负号运算符,用于取变量的相反数。 - `(类型)`:类型转换运算符,强制将一种类型转换为另一种类型。 - `*`:指针运算符,用于访问指针所...
)和按位取反运算符(~),以及前缀增量(++)和减量(--)运算符,正号(+)、负号(-),类型转换运算符(类型),指针运算符(*),地址运算符(&),长度运算符(sizeof)等,它们属于单目运算符。 3. 乘法(*)、除法(/)、取余(%)...
4. **正号** (+): 作为单目运算符时,用于正数的表示,没有实际作用;作为双目运算符时,用于加法运算。 5. **负号** (-): 作为单目运算符时,用于取负;作为双目运算符时,用于减法运算。 6. **自增运算符** (++)...
间接寻址 `*`、一元正号 `+`、一元负号 `-`、按位求反 `~` 和逻辑非 `!` - **间接寻址**:用于获取指针指向的内存位置的值。 - **一元正号**:表示数值本身。 - **一元负号**:表示数值的相反数。 - **按位求反**...
7. **正号 (一元 +)**:表示数值的正号。 - 示例:`+7` 8. **负号 (一元 -)**:数值的取反运算。 - 示例:`-X` #### 三、布尔运算符 布尔运算符用于执行布尔值的逻辑运算,主要应用于条件判断。 1. **逻辑非 ...
2. **单目运算符** (优先级2): `-`、`+`(正号)、`++`、`--`、`*`(解引用)、`&`(取地址)、`!`(逻辑非)、`~`(按位取反)、`sizeof`。这些运算符通常作用于一个单一的变量或表达式,例如,`++i`会递增变量i的...
一元运算符有两个,分别是加号(+)表示正号,和减号(-)表示负号。二元运算符包括加法(+), 减法(-), 乘法(*), 除法(/), 取余(%), 幂运算(**) 和地板除法(//)。特别地,地板除法返回除法运算中,小于等于实际商的最大...