0
点赞
收藏
分享

微信扫一扫

【JavaScript】类型转换


效果展示

【JavaScript】类型转换_显式

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>类型转换</title>
</head>
<body>
<input type="button" value="String数据类型转换" onclick="transform1()" />
<input type="button" value="number数据类型转换" onclick="transform2()" />
<script>/*
大多数情况下,运算符和函数会自动将赋予它们的值转换为正确的类型。
比如:
alert 会自动将任何值都转换为字符串以进行显示;
算术运算符会将值转换为数字。
在某些情况下,我们需要将值显式地转换为我们期望的类型。
*/

/*字符串转换
当我们需要一个字符串形式的值时,就会进行字符串转换。
比如:
alert(value) 将 value 转换为字符串类型,然后显示这个值。
我们也可以显式地调用 String(value) 来将 value 转换为字符串类型。
*/
let value = true;
console.info("value的类型是:" + typeof(value));

function transform1() {
// 字符串类型转换
value = String(value);
console.info("value的类型是:" + typeof(value));
}

/*数字类型转换
在算术函数和表达式中,会自动进行 number 类型转换。
比如:
当把除法 / 用于非 number 类型;
我们也可以使用 Number(value) 显式地将这个 value 转换为 number 类型。

*/
let info1 = "'6'/'2'的结果是:";
let info2 = ",结果的数据类型是:";
alert(info1 + "6" / "2" + info2 + typeof("6" / "2")); // 3

function transform2() {
let str = "123";
console.info(typeof str); // string
let num = Number(str); // 变成 number 类型 123
console.info(typeof num); // number
}

/*
当我们从 string 类型源(如文本表单)中读取一个值,但期望输入一个数字时,通常需要进行显式转换。
如果该字符串不是一个有效的数字,转换的结果会是 NaN
*/
let age = Number("an arbitrary string instead of a number");
alert(age); // NaN,转换失败
if (age == NaN) {
console.info("转换失败!");
} else {
console.info("转换成功!");
}

/*
值 变成……
undefined NaN
null 0
true 和 false 1 and 0
string 去掉首尾空格后的纯数字字符串中含有的数字。
如果剩余字符串为空,则转换结果为 0 。
否则,将会从剩余字符串中“读取”数字。
当类型转换出现 error 时返回 NaN。

请注意 null 和 undefined 在这有点不同:null 变成数字 0,undefined 变成 NaN。
*/
alert(Number(" 123 ")); // 123
alert(Number("123z")); // NaN(从字符串“读取”数字,读到 "z" 时出现错误)
alert(Number(true)); // 1
alert(Number(false)); // 0


/* 布尔类型转换
布尔(boolean)类型转换是最简单的一个。
它发生在逻辑运算中(稍后我们将进行条件判断和其他类似的东西),但是也可以通过调用 Boolean(value) 显式地进行转换。
转换规则如下:
直观上为“空”的值(如 0、空字符串、null、undefined 和 NaN)将变为 false。
其他值变成 true。
*/
alert(Boolean(1)); // true
alert(Boolean(0)); // false

alert(Boolean("hello")); // true
alert(Boolean("")); // false

/*
请注意:包含 0 的字符串 "0" 是 true
一些编程语言(比如 PHP)视 "0" 为 false。但在 JavaScript 中,非空的字符串总是 true。
*/
alert(Boolean("0")); // true
alert(Boolean(" ")); // 空白,也是 true(任何非空字符串都是 true)

/* 总结
人们通常会犯错误的值得注意的例子有以下几个:
1.对 undefined 进行数字型转换时,输出结果为 NaN,而非 0。
2.对 "0" 和只有空格的字符串(比如:" ")进行布尔型转换时,输出结果为 true。
*/</script>
</body>
</html>


举报

相关推荐

0 条评论