有一些在JavaScript中常见的表达式,但是一些编程纯粹主义者会告诉您,这绝不是一个好主意。这些表达式的共同之处在于它们对自动类型转换的依赖-这是JavaScript的核心功能,根据情况和您的观点,这既有优势又有劣势。
答案 0 :(得分:2)
Type coercion
和type conversion
相似,不同之处在于type coercion
是JavaScript自动将值从一种类型转换为另一种类型(例如,字符串转换为数字)时。它也不同之处在于它将决定如何使用自己的集合或规则coerce
。我发现此示例很有用,因为它显示了一些有趣的输出行为,说明了此coercive
行为:
const value1 = '5';
const value2 = 9;
let sum = value1 + value2;
console.log(sum);
在上面的示例中,JavaScript将数字中的9强制转换为字符串,然后将两个值连接在一起,从而得到59的字符串。JavaScript可以在字符串或数字之间进行选择,并决定使用字符串
编译器可以将5强制转换为数字并返回14之和,但没有。要返回此结果,您必须使用Number()方法将5显式转换为数字:
sum = Number(value1) + value2;
我在此处写的MDN词汇表条目中:https://developer.mozilla.org/en-US/docs/Glossary/Type_coercion由chrisdavidmills编辑
答案 1 :(得分:0)
JavaScript是否支持自动类型转换?
是的。通常称为胁迫类型,但转换非常准确。
例如:
console.log("Example " + 42);
“自动”将42(一个数字)转换为字符串。我将“自动”用引号引起来,因为它是由+
运算符以明确定义的方式完成的。
另一个例子是,期望数字的各种操作将从字符串(甚至从对象)转换。例如:
const obj = {
valueOf() {
return 2;
}
};
const str = "10";
console.log(Math.max(obj, str)); // 10
console.log(Math.min(obj, str)); // 2
规范中清楚,完整地定义了JavaScript使用的规则。但这并不能防止人们经常对其中的某些东西感到惊讶,例如+""
是0
。