1.1 typeof运算符
typeof
运算符可以查询数据类型:
- 其返回可能值有:undefined,boolean,number,string、object以及function.
- 可以使用typeof(变量名)查询数据类型
var age = 18;
console.log(typeof age); // 'number'
console.log(typeof(age));
1.2 转换成字符串类型
- toString()
var str = "Hello World";
var num = 120.2;
var n = null;
var un;
var bl = true;
var arr = [1,2,3,5];
var obj = {name:"张三"};
function fn1(){}
// 把数值转换为字符串类型
console.log(typeof num.toString())
// 把空类型转换为字符串类型
// Cannot read property 'toString' of null 空类型没有这个方法
// console.log(typeof n.toString());
// 把未定义类型转换为字符串类型
// Cannot read property 'toString' of undefined 未定义类型没有这个方法
// console.log(un.toString())
// 把布尔、数组、对象、函数转换为字符串类型
console.log(typeof bl.toString());
console.log(typeof arr.toString());
console.log(typeof String(obj));
console.log(typeof fn1.toString()); //通过这行代码,我们可以得出结论: 函数也是对象
- String()
// String()函数存在的意义:有些值没有toString(),这个时候可以使用String()。比如:
undefined和null
var num = 18;
var isRight = true;
console.log(String(num));
console.log(String(isRight));
var a = null;
console.log(typeof String(a));
- 拼接字符串方式
num + "",当 + 两边一个操作符是字符串类型,一个操作符是其它类型的时候,会先把其它类型转
换成字符串再进行字符串拼接,返回字符串
1.3 转换成数值类型
- Number()
// Number()可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,返回NaN
// 1 Number()
var str = 'abc'; // Number(str) -》 NaN
var isRight = true; // Number(isRight) -> 1
console.log(Number(str)); //NaN
console.log(Number(isRight)); //1
console.log(Number('123')); //123
// Number() 把字符串转换成数值类型的时候,如果字符串中有一个字符不是数字,返回NaN
console.log(Number('123abc')); //NaN
- parseInt()
var str = '123';
var isRight = false;
console.log(parseInt(str)); //123
// parseInt 无法把布尔类型转换成数值类型 返回的结果是NaN
console.log(parseInt(isRight)); //NaN
//var s1 = 'abc'; // parseInt(s1) -> NaN
var s1 = '123abc';
// parseInt 在转换字符串的时候,如果遇到数字就会转换数字,如果遇到非数字就会返回
console.log(parseInt(s1)); //123
var s2 = 'abc123'; // 如果字符串中第一个字符是非数字 此时返回NaN
console.log(parseInt(s2)); //NaN
- parseFloat()
var str = '123.67';
var isRight = true;
console.log(parseFloat(str)); //123.67
console.log(parseInt(str)); // 123
console.log(parseFloat(isRight)); // parseFloat 无法转换布尔类型 返回的是NaN
var str = '123.12abc';
console.log(parseFloat(str)); //123.12
var str = '123abc';
console.log(parseFloat(str)); //123
parseFloat()把字符串转换成浮点数
parseFloat()和parseInt非常相似,不同之处在与parseFloat()可以得到浮点值
- +,-0等运算
var str = '500';
console.log(+str); // 取正
console.log(-str); // 取负
console.log(str - 0);
1.4 转换成布尔类型
Boolean():
将各种类型的值转化成
Boolean
类型的规则如下:
- Number:任意非0的数值为true,0值和NaN为"false"。
- String:所有的非空字符串转化为 true;""(空字符串)转化成false
- Object的任何非空对象都会转化为 true;
- 在javascript中,只要逻辑表达式不返回undefined不返回null,就都是真的。
注 : 通常和流程控制语句结合使用0 ''( 空字符串 ) null undefined NaN 会转换成 false 其它都会转换成 true 。
var str1 = "Hello World";
var str2 = "";
var num = 120.2;
var n = null;
var un;
var bl = true;
var arr = [];
var obj = {};
// function fn1(){}
// 任何非空字符串都转换为true,空字符串转换为false
console.log(Boolean(str1)); // true
console.log(Boolean(str2)); // false
// 任何非空字符串都转换为true,空字符串转换为false
console.log(Boolean(str1)); // true
console.log(Boolean(str2)); // false
// 对象和数组都转换为true
console.log(Boolean(arr));
console.log(Boolean(obj));
// Null和Undefined都转换为false
console.log(Boolean(n));
console.log(Boolean(un));