数据类型之间的转换
数据类型
在进行数据类型之间的转换之前,我们得先知道JavaScript中有几种数据类型。
字符串(String)
字符串可以是引号中的任意文本。可以使用单引号或双引号:
var name = "xiaoming";
在字符串中使用引号,需要注意字符串用双引号,内部用单引号;字符串用单引号,内部用双引号,避免匹配包围字符串的引号。
可以通过length
属性获取字符串的长度
数字(Number)
JavaScript 只有一种数字类型。数字可以带小数点,也可以不带:
var num1 = 520;
var num2 = 520.1314;
极大或极小的数字可以通过科学(指数)计数法来书写:
var num3 = 5.201314e6; // 5201314
var num4 = 5.201314e-3; // 0.005201314
NaN
NaN:not a number 是一个特殊的数字,没有任何意义。
console.log(typeof NaN); // Number
任何与NaN运算结果都是NaN
num = 0 / 0;// NaN
num = 2 + NaN;// NaN
与字符串的运算中会转化为字符串
num = 'hello'+NaN;
console.log(num); // 'helloNaN'
NaN 是js中唯一一个不等于自身的值,判断某个值是非数字不能与NaN直接比较,需要通过调用isNaN()
来判断。
console.log(NaN == NaN); //false
isNaN() 如果是一个非数字返回true
console.log(isNaN(NaN)); // true
console.log(isNaN(2)); // false
布尔(Boolean)
布尔(逻辑)只能有两个值:true 或 false。
Null 和 Undefined
null表示尚未存在的对象,但是函数或方法返回的是对象,找不到该对象时,返回的是null;
可以通过将变量的值设置为 null 来清空变量。
undefined是声明了变量但为对其初始化时赋予变量的值;
如果使用一个未定义的变量,或者是没有初始值的变量,都会得到undefind,其实是null的一个派生,因此,undefined和null是相等的。
console.log(undefined == null); // true
console.log(undefined === null); // false
console.log(typeof null); // object
console.log(typeof undefined); // undefined
对象(Object)
对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。属性由逗号分隔:
var person={
name:"John",
id:5566,
friend:{
name:'Lily',
age: 18
},
run: function(){
console.log('John正在奔跑');
}
};
关于对象还有很多内容,不在此进行拓展。
数据类型之间的转换
1. 字符串转数字
Number()
只有数字类型的字符串才能使用Number() 转为数字,带有其他字符:字母、符号、汉字等的字符串无法转为数字,最终会得到一个非数字 NaN
var num1 = Number('2'); // 2
var num2 = Number('2a'); // NaN
console.log(Number(NaN)); // NaN
//乘、除、减的运算会让字符串转化为数字
console.log('2' * 1); // 2
console.log('2' / 1); // 2
console.log('2' - 0); // 2
2. 布尔型转数字
布尔类型转为数字得到0或者1
Number()
num = Number(true); // 1
num = Number(false); // 0
console.log(true * 1);// 1
3. 数字转字符串
var num = 2;
var str = num.toString();// '2'
str = String(num); // '2'
toString() 和 String() 的区别
num = undefined; // undefined 未定义
//TypeError: Cannot read property 'toString' of undefined 不能从 undefined 中获取属性 toString,在 undefined中没有toString属性
// 访问一个变量中不存在属性会报错
// num.toString();//直接报错无法使用
console.log(String(num));// 'undefined'
num = null; //空
// TypeError: Cannot read property 'toString' of null 不能从 null 中获取属性 toString,在 null中没有toString属性
// 访问一个变量中不存在属性会报错
// num.toString(); // 直接报错无法使用
console.log(String(null));// 'null'
总结:大多数值都有toString()方法,但是null和undefined是没有的;任何值都可以传入String()方法中使用。
4. 布尔型转字符串
var num = true;
var str = num.toString(); // 'true'
str = String(num); // 'true'
console.log(str);
5. 数字转布尔型
空的字符串、数字0、NaN、null、undefiend转成布尔类型都是假,其余为true。
console.log(Boolean(2.1)); // true
console.log(Boolean(-2)); // true
console.log(Boolean(0)); // false
console.log(Boolean('hello')); // true
console.log(Boolean('0')); // true
console.log(Boolean(' ')); // true
console.log(Boolean('')); // false
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
console.log(Boolean(NaN)); // false
补充:字符串拼接:使用 + 把字符串和其他内容进行拼接,最终结果转换为字符串
var a = 'hello' + 2 + '2'; // 'hello22'
a = 2 + 3 + '3'; // 先计算2+3得到数字5,再把数字5和字符串'3'拼接,得到结果是 '53'
a = 2+3+'3'+2*3; //先计算乘法得到 2+3+'3'+6 结果是 '536'
a = '1' + 1/2; // 先计算1/2得到数字0.5,再计算 '1'+0.5 结果是 '10.5'
console.log(a);
var b = true + '1'; // 'true1'
b = true + 0 + '1'; // '11'
b = true + true + "1"; // '21'
console.log(b);
参考网站
来源:CSDN
作者:lucky-leaf
链接:https://blog.csdn.net/maple_leaf_red/article/details/103733866