为什么这个JavaScript有两种不同的解释方式

Why is this JavaScript interpreted two different ways?

本文关键字:解释 方式 两种 JavaScript 为什么      更新时间:2023-09-26

有人能解释一下为什么这个JavaScript有两种不同的解释方式吗?

此:

var testnum = $("<div>00000001</div>").text();
var test = "claimid:" + + testnum;
alert(test);

这会引发一个警报,显示:claimid:1

其中:

var testnum = $("<div>00000001</div>").text();
var test = "claimid:" + testnum;
alert(test);

这会引发一个警报,显示:claimid:00000001

我明白为什么第二个把testnum当作字符串,但为什么它把testnum当成第一个的数字。

您有两个加号。第二个加号是一元加号运算符,在Javascript中,它的唯一目的是将其操作数转换为数字。

但为什么它将testnum视为第一个数字呢。

请记住,在JavaScript中,+可以用作一元运算符,将字符串转换为数字。这就是第二个加号的含义:

var test = "claimid:" + + testnum;
//                      ^ HERE

在任何一种情况下,字符串串联的优先级都高于数字加法(如果适用),但第一种情况会将00000001的值转换为数字,这就是为什么会显示普通的旧1

在第一种情况下,+被解释为一元正运算符。考虑x = -5。-是一元负运算符。+获取一个值并返回其数值。