目录

JS的数据类型:

数据类型的显式转换:

1.转换为字符串类型:

2.转换为数值类型:

3.转换为布尔类型:

数据类型的隐式转换:

1.递增和递减运算符(++,--的前置和后置):

2.逻辑操作符(!、&&、||),即短路运算符;

3.关系操作符(<  >  >=  <= == != === !==):

4.相等操作符(==和===):

 NaN:


java隐式转换例子 隐式类型转换js_javascript

JS的数据类型:

  • 基础类型:numberstring(索引用[i],不能用索引进行修改字符串),boolean(只能全小写),undefinednull;
  • 引用类型:object(用.keys()返回对象的键值,用这个方法也可以返回数组的索引数组),symbol,其中数组和函数是特殊的object。

数据类型的显式和隐式转换:

1.转换为字符串类型:

  • obj.toString() ???
  • String(obj):可以把undefined和null转为字符,但是方法1转不了
  • 用+进行字符串拼接(隐式)

2.转换为数值类型:

  • Number(obj):可以将任何值转为数值,但是必须obj中全是数值。
  • parseInt(obj):转换字符串中的整数,到小数点或者字符串结束,如果字符串开头,就会变成NaN。
  • parseFloat(obj):转换字符串中的小数,到第二个小数点或字符串结束。
  • 用+,-,-0运算转换:如+str,-str,str-0将字符串转为数值(隐式),做Number()操作

3.转换为布尔类型:

  • Boolean(obj);
  • !!obj(隐式)

(除空字符串,null,undefined,NaN,0会被转为false,其他都会被转成true。)

数据类型的隐式转换:

1.递增和递减运算符(++,--的前置和后置,做Number()操作):

  1. 如果是数字字符串(整数或者浮点数),则会用 number()方法 将字符串转为数值,再进行加减操作,返回number类型的值;
  2. 如果是包含其他字符的字符串,则返回NaN;
  3. 如果是布尔值,则会把true或false转为1或者0,再进行加减操作,返回number类型的值;
  4. 如果是null类型,则会把null转换为0,再进行加减操作,返回number类型的值;
  5. 如果是undefined,则会把undefined转为NaN,再进行加减操作,返回number类型的值;
  6. 如果是对象,则先会通过对象的valueof(),进行转换,如果返回的是NaN,调用toString()方法,返回number类型的值。

2.逻辑操作符(!、&&、||),即短路运算符;

  1. 逻辑非(!)操作符:首先会通过Boolean()函数将其操作值转为布尔值,再求反;
  2. 短路与(&&)操作符:第一个值为真,返回第二个操作值;
  3. 短路或(||)操作符:第一个值为假,返回第二个操作值。

3.关系操作符(<  >  >=  <= == != === !==):

  1. 两个数值直接比大小;
  2. 两个都是字符串,则进行unicode编码比较;
  3. 一个是数值,另一个值转换为数值进行比较;
  4. 一个是对象,则调用对象的valueof()和toSring()方法,再进行上述比较;
  5. 一个操作是布尔值,则将布尔值转换为数值再进行比较,true返回1和false返回0;
  6. 要比较相等性之前,不能将 null 和 undefined 转换成其他任何值。

4.相等操作符(==和===):

  1. 一个是数值,另一个值转换为数值进行比较;
  2. null和undefined用==比较是相等的,但用===比较不相等。

java隐式转换例子 隐式类型转换js_java_02

 NaN:

        NaN做任何计算都是NaN;NaN与任何类型数据比较都会返回false。