1, 什么时候触发
执行 算数运算时触发
// // true --- 1
// console.log( 100 - true ) ;
// // false --- 0
// console.log( 100 - false ) ;
// // null --- 0
// console.log( 100 - null ) ;
// // '' ' ' --- 0
// console.log( 100 - '' ) ;
// // '100' '100.123' '2e3' 符合数字规范的字符串内容
// // 转化为对应的数值
// console.log( 100 - '5' );
// console.log( 100 - '50.123' );
// console.log( 100 - '2e3' );
// 不符合数字规范的字符串 undefined
// 转化为 NaN
// console.log( 100 - '5a' );
// console.log( 100 - 'a100' );
// console.log( 100 - '2w3' );
// console.log( 100 - undefined );
总结:
只要是 算数运算符 先转化为数值类型 再执行 算数运算
转化为 对应的数值
1
true
0
false
null
''
' '
转化为 NaN
不符合数字规范的字符串
undefined
特别注意
如果 有 字符串参数 加法运算 执行结果是 字符串拼接
// +号两侧 没有字符串 执行 加法运算
// undefined 和 null 先转化为数值类型
// undefined --- NaN
// null --- 0
// NaN + 0 ---- NaN
console.log( undefined + null );
// 有字符串参与 执行 字符串拼接 结果是 undefinednull
console.log( undefined + 'null' );