JavaScript数据类型之隐式类型转换

JavaScript的数据类型分为七种,分别为null,undefined,boolean,string,number,object,symbol ( ECMAScript 2015新增)。object是引用类型,其它的六种是基本类型或者是原始类型

ES5的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin模式),新方法的名字就有可能与现有方法产生冲突。ES6引入了一种新的原始数据类型Symbol,表示独一无二的值。
Symbol值通过`Symbol`函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的Symbol类型。凡是属性名属于Symbol类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。

1.加法

非字符串与字符串相加,会将非字符串转化为字符串。布尔值与数字相加,会转化为数字,同样适用于减乘除。例如:

x = "The answer is " + 42 // "The answer is 42"
y = 42 + " is the answer" // "42 is the answer"
true+12 //13

2.减法

进行减法操作,那么两个操作数都会先被转换为数字,然后在进行算数运算。例如:

"35" -5 // 30
"35" + 5 // "355"
var bool = true; var num = "8"; console.log(bool - num); // -7

3.将string转化为number

  • parseInt()
  • parseFloat()
  • 用“+”号操作符
"1.1" + "1.1" = "1.11.1"
(+"1.1") + (+"1.1") = 2.2  

4.==等号运算

undefined和null比较特殊,它们两个使用==运算符返回值是true。

其他值类型进行比较的时候都会将运算数转换为数字。

console.log(undefined==null); //true
console.log("3"==3); //true
console.log("1"==true); //true

上面的代码会将字符串"3"转换成数字,然后再进行比较,将"1"和true转换成数字,然后进行比较。

原文地址:https://www.cnblogs.com/cheemon/p/6026028.html