自增前置 和 后置
后置
首先我们要真正地明白自增的过程,var++;
var++ 的过程是
- var的值增加 1
- 把增加过的值在此赋值给var
下面的代码希望能够帮你理解
var d = 10;
d = d + 1;
console.log(d);//结果是11
//上下的代码不可以同时出现在你的编辑器内
var d = 10;
d++;
console.log(d);//结果是11
//上下的代码不可以同时出现在你的编辑器内
var d = 10;
++d;
console.log(d);//结果是11
可以看到,d=d+1 就是 d++ 的 一个过程分解; 因此,重点是我们一定要记住d++这个过程已经帮助我们赋值给原变量了!
d = d+1;这个等式为了理解下面的一段
当你输出 d++ 和 d 的时候结果是不一样的,因为 d++ 中的d是等号右边的d(加法运算前的), 而d中的d是左边d(加法运算完后的d);现在你应该可以更加明白了 先加 和 后加 说的是什么了吧?
var d = 10;
console.log(d++);//结果是10,加法运算之前的d
//粘贴下面的代码时,请把上面的代码从你的编辑器中删除或者注释掉
var d = 10;
d = d + 1;
console.log(d);//结果是11,加法运算之后的d
前置
现在我们来讨论前置,++d;即所谓的先加
var d = 10;
console.log(++d);//结果都是10,加法运算之后的d
//粘贴下面的代码时,请把上面的代码从你的编辑器中删除或者注释掉
var d = 10;
d = d + 1;
console.log(d);//结果都是11,加法运算之后的d
强调一下,d++运行完后,d的值已经被加1了,只是当打印d++的时候,返回值是原来的d/加法运算之前的d。
练习
var d = 20
var result = d++ + ++d + d;
console.log(result);
可自增自减的数据类型
可以用自增自减的数据有:数值,字符串,布尔,浮点,和对象1
一元加法 +
var = + a 可以把其他的数据类型,将其转化为 number,原理和 Number()一样。
字符串,布尔,浮点,和对象
var result = 1 + +'2' + 3;
console.log(result); //返回结果为 6
console.log(typeof result);
任何值和字符串相加的话,会返回字符串
//去编辑器里面测试一下吧
var text = 'test';
var obj = {valueOf:function(){
return 'tom'}
};
console.log(text + 1);
console.log(text + true);
console.log(text + null);
console.log(text + undefined);
console.log(text + obj);
一元减法 -
也可以把其他的数据类型转换为 Number
但主要用于基本但算术运算
详细讨论请见 javascript高级程序设计(第三版) 第37页 ↩︎