递增和递减分别有前置型和后置型,这里不作区分。
下面的代码全部是后置型递增:
var str = "z";console.log(str++) //NaNconsole.log(typeof str) //number复制代码
var str = "123abc";console.log(str++) //NaNconsole.log(typeof str) //number复制代码
var str = "123";console.log(str++) //123console.log(typeof str) //number复制代码
以上三段代码分别对应着三种字符串:
- 不包含有效数字字符的字符串
- 数字和其他字符结合的字符串,不是有效的数字字符串,也属于1的一种
- 包含有效数字字符的字符串
一元操作符“++”,“- -”对于上面的这几种字符串,有如下规则:
1.在应用于一个包含有效数字字符的字符串时,先将其转化为数字值,再执行加减1。字符串变量变为数字变量。
2.在应用于一个不包含有效数字字符的字符串时,将变量的值设为NaN。字符串变量变为数字变量。
其中NaN是一种特殊的Number类型。
注意:
NaN instanceof Number //false复制代码
基本类型不能像这样检测类型,因为它不是Number构造函数的一个实例对象。