JavaScript是否支持自动类型转换?

时间:2019-04-14 16:18:48

标签: javascript

有一些在JavaScript中常见的表达式,但是一些编程纯粹主义者会告诉您,这绝不是一个好主意。这些表达式的共同之处在于它们对自动类型转换的依赖-这是JavaScript的核心功能,根据情况和您的观点,这既有优势又有劣势。

2 个答案:

答案 0 :(得分:2)

Type coerciontype 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_coercionchrisdavidmills编辑

答案 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