js常用算术运算符与一元运算符在做运算时不同类型的转换规则

Posted 勾践

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js常用算术运算符与一元运算符在做运算时不同类型的转换规则相关的知识,希望对你有一定的参考价值。

/**
 * 算术运算符:+, -, *, /, %
 * 当对非number类型的值进行运算(-, *, /, %)时,会将这些值先转换成number再运算,加法‘+‘运算除外,
 * 当对非number类型(string, object)的值做加法(+)运算时会将这些值先转换成string再做拼接而不是相加
 * number类型的值与NaN做运算都是NaN
 */
// number
console.log(`1 + 1 = ${1 + 1}`); // 1 + 1 = 2
console.log(`1 + NaN = ${1 + NaN}`); // 1 + NaN = NaN
// string
console.log(`1 + ‘foo‘ = ${1 + ‘foo‘}`); // 1 + ‘foo‘ = 1foo
// boolean
console.log(`1 + true = ${1 + true}`); // 1 + true = 2
console.log(`1 + false = ${1 + false}`); // 1 + false = 1
// null
console.log(`1 + null = ${1 + null}`); // 1 + null = 1
// undefined
console.log(`1 + undefined = ${1 + undefined}`); // 1 + undefined = NaN
// object
console.log(`1 + (new Object()) = ${1 + (new Object())}, typeof (new Object()) = ${typeof (new Object())}`); // 1 + (new Object()) = 1[object Object], typeof (new Object()) = object

/**
 * 一元运算符:-, +
 * 对于number类型数字,+不会对数字产生影响,-将数字转换成负数
 * 对于非number类型的值,会先将值转换成number再做运算
 */
// number
console.log(`+1 = ${+1}`); // +1 = 1
console.log(`-1 = ${-1}`); // -1 = -1
console.log(`+NaN = ${+NaN}`); // +NaN = NaN
// string
console.log(`+‘a‘ = ${+‘a‘}`); // +‘a‘ = NaN
console.log(`+‘‘ = ${+‘‘}`); // +‘‘ = 0
console.log(`+‘1‘ = ${+‘1‘}`); // +‘1‘ = 1
// boolean
console.log(`-true = ${-true}`); // -true = -1
console.log(`-false = ${-false}`); // -false = 0
// null
console.log(`-null = ${-null}`); // -null = 0
// undefined
console.log(`-undefined = ${-undefined}`); // -undefined = NaN
// object
console.log(`+(new Object()) = ${+(new Object())}`); // +(new Object()) = NaN

// 注意:以上显示结果仅是在谷歌浏览器下(正式版本71.0.3578.98 (64位))

 

以上是关于js常用算术运算符与一元运算符在做运算时不同类型的转换规则的主要内容,如果未能解决你的问题,请参考以下文章

《Java从小白到大牛精简版》之第6章 运算符(上)

Java中各运算符的用法

运算符

javascript运算符——算术运算符

JS运算

重载运算与类型转换——基本概念,输入和输出运算符,算术和关系运算符,赋值运算符,下标运算符,递增和递减运算符,成员访问运算符