JS类型转换-重难点

数据类型

ES5的数据类型一共有6种 number string boolean undefined null object
其中string number boolean null undefined属于基本数据类型
而object属于引用数据类型
类型转换发生在基本数据类型中
JS类型转换分为两大类:显式转换和隐式转换,显式转换又叫强制类型转换

显式转换

显式转换是指能直接看见将一种数据类型转换成另外一种数据类型,在程序上的表现就是借助一些方法来实现转换,如:Number() String() Boolean() parseInt() parseFloat()

1、其它类型转换成数值类型

//Number(val)将val强制转换成数值类型
//字符串中只要有字母,就转成NaN
console.log(Number("abc")); //NaN (not a number)
console.log(Number("10a"), Number("a10")); //NaN NaN
console.log(Number("10")); //10
// 空格或者不写,都转成0
console.log(Number("")); //0
console.log(Number(" ")); //0
console.log(Number(true)); //1
console.log(Number(false)); //0
// undefined转成NaN  
console.log(Number(undefined)); //NaN
console.log(Number(null)); //0 
//parseInt() parseFloat() 理论上都是用于将字符串转成数值的,实际上使用用于取整或者取小数
console.log(parseInt("10a")); //10,如果第一个字符为数字,依次向后取,直到不为数字结束
console.log(parseInt("10.1a"));//10
console.log(parseFloat("10.1a")); //10.1,可以取到小数部分
console.log(parseFloat("10.1.1a"));//10.1

console.log(parseInt("a10")); //NaN
console.log(parseInt("")); //NaN
console.log(parseInt(" ")); //NaN

2、其它类型转换成字符串类型

//String(val) 将val强制转换称字符串类型 但是比较简单,就是在val外加一对引号
console.log(String(10), String(true), String(undefined), String(null));

3、其它类型转成布尔(boolean)类型

//Boolean(val)将val强制转换称布尔类型
//数值0和NaN转成false,其余数值转成true
console.log(Boolean(10)); //true
console.log(Boolean(-10)); //true
console.log(Boolean(0)); //false
console.log(Boolean(NaN)); //flase,NaN是数值类型里面一个特殊的值

console.log(Boolean("abc")); //只要有字符串就转成true
console.log(Boolean("0")); //true
console.log(Boolean("false")); //true
console.log(Boolean("")); //false
console.log(Boolean(" ")); //true

console.log(Boolean(undefined)); //false
console.log(Boolean(null)); //false

隐式转换

1、算术运算符

// + 如果有一个操作数为字符串,另外一个操作数也会转成字符串,进行拼接
console.log("abc" + 10); //"abc10"
//其它算术运算符  两个操作数都转成数值
console.log("abc"-10); //NaN,"abc"转换成数值是NaN
console.log(true + 10); //11
console.log(true - 10); //-9
console.log(undefined - 10); //NaN  undefined转成Number是NaN,所以 NaN-10=NaN
console.log(null + true); //1,null转成数值型是0,true转成数值型是1,所以0+1
console.log(true*10,null*10); //10 0
console.log(null/10,undefined/10); //0 NaN

2、关系运算符

//如果两个操作数都是字符串,按位比较
console.log("12" > "2"); //"1"和"2"比,false
//不是以上情况,其他类型转换成数值
console.log("12" > 2); //12和2比,true
//==和===的区别?
console.log("10" == 10); //类型转换
console.log("10" === 10); //比较的两个值相同  类型  值
//!=和!==情况一样

对于隐式类型转换,我们有一个骚操作,我们知道将两个操作数做 - 或 * 或 / 运算时自动转换为Number,我们可以通过这一特点来将别的数据类型转换成数值类型,通过-0 或者*1或者/1来将其转换成数值类型。原理和Number()函数一样,使用起来更加简单。

var d = "123"-0;//123
var e = true*1; //1
var f = false/1; //0
var g = null-0; //0

我们知道任何数据类型的值和字符串进行 + 运算时,可以完成字符串拼接操作,我们利用+""这一特点,可以玩成任何数据类型想字符串类型的一个转换,如

var a = 123+""; //'123'
var b = null+""; //'null'
var c = undefined+""; //undefined

猜你喜欢

转载自blog.csdn.net/qq_38053677/article/details/107320363