【问题标题】:What are the pros of loose typing? [closed]松散打字的优点是什么? [关闭]
【发布时间】: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 我认为松散类型语言和强类型语言之间的主要区别在于运行时执行隐式类型转换的意愿。我错了吗?如果是这样,哪些功能会使语言类型松散?

标签: javascript loose-typing


【解决方案1】:

松散类型的语言有许多可以作为优势的差异:

  • 不需要interfaces。只要一个对象有你需要的方法名,就调用那个方法。不使用接口可以简化编码减少代码大小。
  • 出于非常相似的原因,不需要泛型。
  • “按类型”函数重载处理更简单 如果函数需要字符串参数,则只需将传入值转换为字符串。如果需要类型检查,可以在此处添加。
  • 我们没有或不需要课程。 [几乎] 一切都是对象 使得传递值更容易。无需自动装箱,无需投射值。
  • 对象很容易扩展而不会破坏代码。您可以创建一个数组,然后删除替换 indexOf 方法以使用二分搜索。最终结果更小,恕我直言,代码更简洁。

【讨论】:

  • 那么你需要编写大量的 TDD 来捕捉运行时的类型不匹配 :) 然后你就会有很多 undefined method reference errors 哈哈 :D 我个人喜欢静态类型的语言。它让我更有效率,代码变得更少错误
  • @JamaJurayevich 传递错误的值对我或与我合作过的任何团队来说从来都不是问题......然后,我再次在组装时咬牙切齿。跨度>
  • @JeremyJStarcher 点 #1、2 和 5 不是更准确地归因于动态类型语言(不是松散类型语言)吗?
  • @TMcManemy 你说得有道理,我应该在那儿具体说明一下。我掉进了loosely-typed 被过度应用的陷阱。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-10
  • 2011-04-01
  • 2010-09-14
  • 2014-06-26
  • 2010-09-12
  • 2010-10-11
相关资源
最近更新 更多