JavaScript类型转换

typeof 操作符:区分数据是什么类型的。

六种值类型:number 、string 、boolean 、undefined 、object 、function 。

两种写法:
console.log(typeof(num)); 推荐
console.log(typeof num);

// number
var num = 123;
console.log(typeof(num));

// string
var num = "true";
console.log(typeof(num));

// boolean
var num = true;
console.log(typeof(num));

// object
var num = {};
console.log(typeof(num));

var num = [];
console.log(typeof(num));

var num = null;
console.log(typeof(num));

// function
var num = function() {};
console.log(typeof(num));

没有定义值时不报错的(只有一种情况:当且仅当)

console.log(typeof(a)); //undefined
console.log(typeof(typeof(a))); //string

类型转换

显示类型转换

  • 1.Number(mix) :转换成数字类型

  • 2.String(mix) :转换成字符串

和number差不多,什么都可以转换成字符串。


  • 3.Boolean():转换成布尔值

转换成布尔值为false的值:undefined、null、NaN、""、0、false,除了这六个值以外的其他值都是true。


  • 4.parselnt() :

转换成整数/整形的数,把小数点去掉


parselnt(string,radix) :parselnt(string,进制) 以目标进制转换成10进制


  • 5.parseFloat(string):转换成浮点类型的数(正常的数,有小数点的数)

跟parselnt(string,radix)差不多。

注意: 如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN。


  • 6.toString(radix):

toString()转换成字符串:undefined、null没有 toString()方法


toString(radix)
以10进制转换成目标进制的过程,和String(mix)差不多,只是用法不一样。


隐式类型转换

调用的都是显示类型转换的方法。

  • 1.isNaN():判断里面的数是不是NaN

隐式调用Number(),先把数放在Number里面进行比对,如果Number输出的值是NaN,那在isNaN就是true。

// true
console.log(isNaN("NaN"));
console.log(isNaN("abc"));

// false
console.log(isNaN("123"));
console.log(isNaN(null));
  • 2.+(加):(拥有隐式类型转换 )

+:
隐式调用的是Number();
当加号两侧有一个是字符串的时候,它就会调用String(),把两个都变成字符串。

数学运算:


字符串连接:


任何数据类型加字符串都等于字符串。

    1. -(减)(乘)/(除)%(摩尔)=(赋值):(拥有隐式类型转换:经过计算,就是转换不成数字,那也属于数字类型。 )

隐式调用的是Number();

infinity 无穷 number ,NaN - not a number。

减:


乘:


除:


摩尔:


  • 4. ++、 --、 +=、 -=、 /=、 乘等、 %=

++:(拥有隐式类型转换:经过计算,就是转换不成数字,那也属于数字类型。 )

++:隐式调用Number();

a ++; ----> a = a + 1;

如果++ 放后面,先打印后执行++。如果++ 放前面,先执行++ 后打印。


--:(拥有隐式类型转换:经过计算,就是转换不成数字,那也属于数字类型。 )

--:隐式调用Number();

a --; ----> a = a - 1;


+=:(拥有隐式类型转换)

+= :
隐式调用的是Number();
当加号两侧有一个是字符串的时候,它就会调用String(),把两个都变成字符串。

a += 10; ----> a = a + 10;


-=:(拥有隐式类型转换:经过计算,就是转换不成数字,那也属于数字类型。 )

-=:隐式调用Number();

a -= 10; ----> a = a - 10;


*=:(拥有隐式类型转换:经过计算,就是转换不成数字,那也属于数字类型。 )

*=:隐式调用Number();

a *= 10; ----> a = a * 10;


/=:(拥有隐式类型转换:经过计算,就是转换不成数字,那也属于数字类型。 )

/=:隐式调用Number();

a /= 10; ----> a = a / 10;


%=:(拥有隐式类型转换:经过计算,就是转换不成数字,那也属于数字类型。 )

%=:隐式调用Number();

a %= 10; ----> a = a % 10;


  • 5.比较运算符 < 、>、 <=、 >=、

返回值为布尔值

NaN 不等于任何东西,包括自己。

有数字就调用Number();
字符串与字符串比较,是asc码比较。

字符串10与字符串8比较,先1和8比较,看大不大于8,如果等于,就再用0和8比较,如果不等于,看哪个大。

<:小于


>:大于


<=:小于或等于


>=:大于或等于


  • 6.== 、!=

返回值为布尔值

调用Number();

转换成布尔值为false的值:undefined、null、NaN、""、0、false

注意:=== 、!==:不发生类型转换

==:等于

特殊的规则:undefined == null


!=:不相等


  • 7.逻辑运算符(&&、 ||、 !)

隐式调用的是Blooean();

  • &&与:(碰假就停)--全真才为真

先看第一表达式转换成布尔值的结果,

如果第一表达式转换成布尔值的结果为真,那么它会往后看第二个表达式转换成为布尔值的结果,直到表达式结束。
如果第一表达式转换成布尔值的结果为假,那么就返回当前结果。
如果只有两个表达式,而且第一表达式转换成布尔值的结果为真,只看到第二个表达式,就可以返回该表达式的值了。


  • ||或:碰真就停。--一真就为真

先看第一表达式转换成布尔值的结果,

如果第一表达式转换成布尔值的结果为真,直接返回当前值。
如果第一表达式转换成布尔值的结果为假,那么它会往后看第二个表达式转换成为布尔值的结果,直到表达式结束。
如果只有两个表达式,而且第一表达式转换成布尔值的结果为假,只看到第二个表达式,就可以返回该表达式的值了。


  • !非:变成布尔值后,再取反

你可能感兴趣的:(JavaScript类型转换)