1. 转换成字符串类型
- toString()
对象都有toString()方法,undefined和null没有toString()方法,两者都没有原型也不是对象。
var num = 123;
console.log(num.toString());//打印"123"
/*但是:
*123.toString();会报语法错误。
*这个点(.)在对象里是调用方法;但在数学运算里(.)的优先级是最高的,它会被当成浮点型,浮点型后边加字母是肯定不行的。*/
- String()
String()函数存在的意义:有些值没有toString()方法,就可以使用String()。
var num1 = 123;
console.log(String(num1));
如果变量有意义可调用.toString()使用转换,
如果变量没有意义就要使用String()转换了。
var num2;
console.log(num2.toString());//这个num2没赋值为undefined没有意义,会报错
var num3 = null;
console.log(num3.toString()); //没有意义也报错
//那么就应该用:
console.log(String(num2)); //打印undefined
console.log(String(num3)); //打印null
- 拼接字符串方式(num + “”)
当 + 两边一个操作符是字符串类型,一个操作符是其它类型的时候,会先把其它类型转换成字符串再进行字符串拼接,返回字符串。
var a = true;
var str = a + "";
console.log(str);//打印"true"
var b = undefined;
var str1 = b + "";
console.log(str1);//打印"undefined"
2. 转换成数值类型
- parseInt();
parseInt()把字符串转换成整数。
console.log(parseInt("12.98"));//12
console.log(parseInt("12.3abc")); //12
//如果第一个是数字就会解析直到遇到非数字结束
console.log(parseInt("abc123")); //NaN
//如果第一个字符就不是数字就返回NaN
- parseFloat();
parseFloat()把字符串转换成浮点数。
parseFloat()和parseInt非常相似,不同之处在与parseFloat会解析第一个点(.)遇到第二个点(.)或者非数字就会结束;如果解析的内容里只有整数,则解析成整数。
console.log(parseFloat("12")); //12
console.log(parseFloat("12abc")); //12
console.log(parseFloat("abc12")); //NaN
console.log(parseFloat("12.34abc")); //12.34
console.log(parseFloat("12.34.99")); //12.34
- Number()
Number()可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,则返回NaN。Number()要比上面的两种方式严格。
console.log(Number("12")); //12
console.log(Number("12abc")); //NaN
console.log(Number("abc12")); //NaN
console.log(Number("12.34")); //12.34
- 隐式转换(+,- 0等运算)
var str = '500';
console.log(+str);//500;取正
console.log(-str);//-500;取负
console.log(str - 0);//500
3. 转换成布尔类型
- Boolean()
undefined,null,0,""(空字符串),NaN,都会转换成false;其它都会转换成true。
console.log(Boolean(-10));//true
console.log(Boolean(""));//falsel;空字符串是false
console.log(Boolean(" ")); //true;空格字符串是true
console.log(Boolean(null));//false
console.log(Boolean(undefined));//false
- 隐式转换(!!)
!true // false
!!true // true
!!'' // false
!!NaN // false
小附加~~
parseInt(字符串 [,基数 ])
如果第二个参数为undefined,0或未指定,则JavaScript假定以下内容:
1.如果输入string以“ 0x”或“ 0X”(零,后接小写或大写X)开头,第二个参数则假定为16,并将字符串的其余部分解析为十六进制数。
2.如果输入string以“ 0”(零)开头,第二个参数则假定为8(八进制)或10(十进制)。选择哪个基数取决于实现。
3.如果输入string以任何其他值开头,则基数为10(十进制)。
parseInt('1111', 2);//拿1111当做2进制的数转化成10进制--> 15
parseInt(3,8);//拿3当做8进制的数转化成10进制--> 3
parseInt(3,2);//拿3当做2进制的数转化为10进制--> NaN(2进制里没3这个数)
parseInt(3,0);//第二个数是0,返回原数--> 3
undefined和null 系统规定他俩就不能和数进行比较!
undefined大于0,小于0,等于0,都返回false
null大于0,小于0,等于0,也都返回false
undefined == null; //true
undefined === null; //false
isNaN(100); //false
isNaN("100"); //false
//这个数经历了number转换之后是不是NaN
{} == {}; //false,相当于都是新房间,并不是同一个对象。