长春网易网站建设,wordpress用什么系统好,html编辑器安卓汉化版,三国类网页游戏前十名文章目录 隐式类型转换#xff08;Implicit Type Conversion#xff09;1、字符串与数字的转换2、非布尔值到布尔值的转换3、在相等性比较中的转换4、对象到基础类型的转换5、在算术运算符中的其他转换 显式类型转换#xff08;Explicit Type Conversion#xff09;1、Numb… 文章目录 隐式类型转换Implicit Type Conversion1、字符串与数字的转换2、非布尔值到布尔值的转换3、在相等性比较中的转换4、对象到基础类型的转换5、在算术运算符中的其他转换 显式类型转换Explicit Type Conversion1、Number()2、parseInt() 和 parseFloat()3、String()4、Boolean()5、Object()6、toString() 和 valueOf() JavaScript中的隐式类型转换和显式类型转换是JavaScript语言中处理不同数据类型相互作用时的重要概念。 隐式类型转换Implicit Type Conversion
隐式类型转换是指在不需要程序员明确指示的情况下JavaScript自动将一个数据类型转换为另一个数据类型以适应特定的运算或操作。
1、字符串与数字的转换
当字符串与数字进行加法运算时数字会被隐式转换为字符串然后进行字符串拼接
在其他算术运算符如 -、*、/、%中如果一个操作数是字符串另一个是数字JavaScript会尝试将字符串转换为数字。如果字符串不能被转换为数字则会返回 NaN
5 2; // 结果为 52字符串与数字相加时数字被转换为字符串进行拼接2、非布尔值到布尔值的转换
在条件语句如 if、while、逻辑运算符如 、||、!以及需要布尔值的上下文中非布尔值会被转换为布尔值。 false、0、null、undefined 和空字符串“”转换为 false 其他所有值包括非零数字、非空字符串、对象、数组等转换为布尔值时均为true
if (0) { // 0 被隐式转换为 falseconsole.log(Truthy);
} else {console.log(Falsy);
}3、在相等性比较中的转换
使用相等运算符时如果两侧的操作数类型不同JavaScript会尝试进行类型转换使其可以比较。
而对于严格相等运算符不会进行类型转换类型不同的值会直接判断为不等。
5 5 //true
5 5 //false4、对象到基础类型的转换
当对象需要被转换为基本类型时JavaScript会尝试调用对象的 valueOf() 方法如果返回的值不是一个基本类型接着尝试调用 toString() 方法。 例如在 alert(obj) 时如果 toString() 方法没有被重写会调用默认的 toString() 方法返回一个字符串表示。
alert(obj) //[object Object]如果要显示完整结构应该使用JSON.stringify
alert(JSON.stringify(obj))5、在算术运算符中的其他转换
null在算术运算如 、-、*、/ 等中null 会被转换为 0但是如果是进行一元运算符 或 – 运算会抛出 TypeError 错误。
undefined在进行算术运算时undefined 也不会直接转换为 0而是会抛出 TypeError 错误。
console.log(null 2); // 输出2null 被转换为了 0
console.log(undefined 2); // 输出NaNundefined 被转换为了 NaNconsole.log(null); // 报错TypeError: Invalid left-hand side expression in postfix operation
console.log(undefined); // 报错TypeError: Cannot read property toString of undefined显式类型转换Explicit Type Conversion
显式类型转换是指程序员明确地将一个数据类型转换为另一个数据类型通常通过使用转换函数来实现。
1、Number()
将字符串、布尔值或其他可转换的数据类型转换为数字。
let strNum 123;
let num Number(strNum); // num 现在是数字 1232、parseInt() 和 parseFloat()
专门用于将字符串转换为整数或浮点数。 将字符串、布尔值或其他可转换的数据类型转换为数字。
let strInt 123;
let int parseInt(strInt, 10); // int 现在是整数 123
let strFloat 3.14;
let float parseFloat(strFloat); // float 现在是浮点数 3.143、String()
将数字、布尔值或其他可转换的数据类型转换为字符串。
let num 123;
let str String(num); // str 现在是字符串 1234、Boolean()
将非布尔值转换为布尔值
let zero 0;
let boolZero Boolean(zero); // boolZero 现在是 false
let nonEmptyStr Hello;
let boolStr Boolean(nonEmptyStr); // boolStr 现在是 true5、Object()
可以将非对象转换为对象。对于原始类型它会创建一个包装对象但通常这不是一个常用的显式转换方法因为直接使用操作原始类型的包装对象如new Number(), new String(), new Boolean()更为明确。
let num 123;
let objNum Object(num); // objNum 是一个Number对象6、toString() 和 valueOf()
可以从对象中提取其基本类型值这也是显式类型转换的一种方式但通常是在对象上调用这些方法而不是使用转换函数。
let date new Date();
let dateString date.toString();
// dateString 是一个日期的字符串表示类似Sat Feb 18 2024 10:10:10 GMT0800 (Your Time Zone)请注意这些转换并非总是能得到预期的结果特别是在处理非标准格式的输入时需要谨慎使用并结合实际情况判断。例如parseInt 和 parseFloat 在处理不符合数字格式的字符串时会返回 NaN。