【发布时间】:2014-10-03 18:56:52
【问题描述】:
JavaScript 被称为“松散类型”的语言。这是因为运行时允许对不同类型的操作数执行操作(通过强制):
var number = 6;
var bool = true;
var result = number + bool; //result is 7
来自一个主要是静态类型、强类型的背景,我很难推断这种方法的好处。当然,它可以产生一些非常简洁的语法,但在试图追踪错误时,它似乎也可能导致一场噩梦。那么,除了简洁之外,松散类型和隐式类型转换还有哪些好处呢?
【问题讨论】:
-
我个人不是很喜欢 javascript 的隐式类型转换,它经常是 unintuitive
-
来自松散类型的背景,我一直想知道为什么智能计算机需要愚蠢的我来拼出1、1.0和“1”之间的区别;您提到的错误被经典程序员过度炒作,并且代表了最常见潜在错误的一小部分。是的,js 可能对这种转换的副作用进行了一些幽默的演示,但对于认真的编码人员来说,这并不是什么大问题。而且,连老程序员都不知道0==false和1==true吗?
-
“这是因为运行时允许对不同类型的操作数执行操作” - 这不是导致它类型松散的原因,因为即使(某些)强类型语言允许这样做(对于某些操作)。
-
@nnnnnn 我认为松散类型语言和强类型语言之间的主要区别在于运行时执行隐式类型转换的意愿。我错了吗?如果是这样,哪些功能会使语言类型松散?