脚本宝典收集整理的这篇文章主要介绍了类型转化,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
类型转化
javascript
类型转化
最新的 ecmascript 标准定义了7种数据类型
原始类型:Boolean、Null、Undefined、Number、String、Symbol「ES6 新增」 对象:Object
数据类型
-
显式类型转换 「手动执行」
-
Number 函数
1. 原始类型转换
- 数值:转换后还是原来的值。
- 字符串:如果可以被解析为数值,则转换为相应的数值,负责得到 NaN。空字符串转为 0。
- 布尔值:ture 转为 1,false 转为 0。
- undefined:转为NaN。
- null:转成 0。
2. 对象类型转化
- 先调用对象自身的 valueOf 方法,如果该方法返回原始类型的值「数值、字符串和布尔值」,则直接对该值使用 Number 方法,不再进行后续步骤。
- 如果 valueOf 方法返回符合类型的值,再调用对象自身的 toString 方法,如果 toString 方法返回原始类型的值,则对该值使用 Number 方法,不再进行后续步骤。如果 toString 方法返回复合类型的值,则报错。
-
String 函数
1. 原始类型转换
- 数值:转为相应的字符串。
- 字符串:转换后还是原来的值。
- 布尔值:ture 转为「ture」,false 转为「false」。
- undefined:转为「undefined」。
- null:转为「null」。
2. 对象类型转化
-
Boolean 函数
1. 原始类型转换
- undefined:
- null:
- -0:
- +0:
- NaN:
- ''空字符串
- 以上全部转化为 false,其他都转换为 ture。
2. 对象类型转化
- 先调用对象自身的 toString 方法,如果该方法返回原始类型的值,则直接对该值使用 String 方法,不再进行后续步骤。
- 如果 toString 方法返回符合类型的值,再调用对象自身的 valueOf 方法,如果 valueOf 方法返回原始类型的值,则对该值使用 String 方法,不再进行后续步骤。如果 valueOf 方法返回复合类型的值,则报错。
-
隐式类型转换 「程序内部执行」
表达式
返回值
typeof undefined
'undefined'
tyPEof null
'object'
typeof true
'boolean'
typeof 123
'number'
typeof "abc"
'string'
typeof function() {}
'function'
typeof {}
'object'
typeof []
'object'
typeof unknownVARiable
'undefined'
实例:
<!DOCTYPE htML>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<title>类型转换</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="main.js"></script>
</head>
<body>
<script type="text/javascript">
// Number 函数:转换成数值
// 转化后还是原来的值
console.log(Number(324)); // 324
// 如果可以被解析为数值,则转换为相应的数值,负责得到 NaN。空字符串转为 0。
console.log(Number("324")); // 3224
console.log(Number("324abc")); // NaN
console.log(Number("")); // 0
// ture 转为 1,false 转为 0。
console.log(Number(false)); // 0
// 转为NaN
console.log(Number(undefined)); // NaN
// 转为0
console.log(Number(null)); // 0
var a = {
a: 1
}
console.log('a', Number({
a: 1
}));
</script>
<script type="text/javascript">
//String 函数
// 数值:转为相应的字符串。
console.log(String(123)); // "123"
// 字符串:转换后还是原来的值。
console.log(String("abc")); // "abc"
// 布尔值:ture 转为「ture」,false 转为「false」。
console.log(String(true)); // "true"
// undefined:转为「undefined」。
console.log(String(undefined)); // "undefined"
// null:转为「null」。
console.log(String(null)); // "null"
var b = {
b: 1,
toString: function () {
return {
b: 2,
};
},
valueOf: function () {
return 'b';
},
};
console.log('b', String(b));
</script>
<script type="text/javascript">
// 以下六个值的转化结果为false,其他的值全部为true。
// undefined
// null
// -0
// +0
// NaN
// ''(空字符串)
console.log(Boolean(undefined)); // false
console.log(Boolean(null)); // false
console.log(Boolean(0)); // false
console.log(Boolean(NaN)); // false
console.log(Boolean('')); // false
var b = {
b: 1,
toString: function () {
return {
b: 2,
};
},
valueOf: function () {
return 'b';
},
};
console.log('b', String(b));
</script>
</body>
</html>
以上是脚本宝典为你收集整理的类型转化全部内容,希望文章能够帮你解决类型转化所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。