数据类型之间的转换

做~自己de王妃 提交于 2019-12-27 20:32:01

数据类型

  在进行数据类型之间的转换之前,我们得先知道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);

参考网站

菜鸟教程
简书

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!