1、JavaScript的隐式转换规则?
首先,我们先思考一下,js数据类型都有哪些?
String,Number,Object,Boolean,undefined,null.symbol
- 当运算符为加号"+"时
- 若一方有String类型,则返回结果为String类型;
- 若有一方为Number类型,而另一方为Object类型,返回结果也会为String;
- 若有一方为undefined类型,而另一方为String类型,返回结果也会为String;
- 若有一方为Null类型,而另一方为String类型,返回结果也会为String;
- 若一方有Number类型,则返回结果为Number类型;
- 若有一方为boolean类型,而另一方为Number类型,返回结果也会为Number;
- 若有一方为undefined类型,而另一方为Number类型,返回结果也会为Number;
- 若有一方为Null类型,而另一方为Number类型,返回结果也会为Number;
** 注:若有一方为number,另一方为Array,或者Object时,返回结果类型为String类型
var a = "2";
var b = 3;
console.log(typeof(a+b)); //string
var a = 2; var b = {a:2};
console.log(typeof(a+b)); //string
var a = 2; var b = [3,6,9,2];
console.log(typeof(a+b)); //string
var a = undefined;b = 2
console.log(typeof(a+b)); //number
var a = undefined;b = 5
console.log(typeof(a+b)); //number
var a = null;b = 5
console.log(typeof(a+b)); //number