为什么这个JavaScript有两种不同的解释方式
Why is this JavaScript interpreted two different ways?
有人能解释一下为什么这个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
。-是一元负运算符。+获取一个值并返回其数值。
相关文章:
- 为什么这在IE中的工作方式与在Firefox中不同
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 使用javascript存储变量的最安全方式
- 以可优化的方式使用requirejs加载模板
- 在Highcharts中,我们可以通过任何方式在渲染图表之前获得plotWidth和plotHeight
- 任何方式使AJAX调用Gmail API,而无需通过JS库
- 为react组件传递道具的最佳方式
- 让Webpack管理Quirky AMD定义的最佳方式
- 你能解释一下这个阶乘函数是如何工作的吗?
- 在承诺链中处理早期回报的最佳方式
- 如何“;过滤器”;或者以其他方式重构该数据
- 有人可以解释一下这个变量的声明方式
- PHP是否以与JavaScript相同的方式解释代码
- 将方程转换为 java 脚本可以解释它的方式
- 为什么这个JavaScript有两种不同的解释方式
- JavaScript中函数的大写是否会影响代码的解释方式
- 谁能解释一下现成的jQuery快捷方式的源代码
- 需要安全的方式在web环境的服务器上解释和执行用户定义的逻辑