01|JavaScript是一种动态的弱类型语言

2020-05-16  本文已影响0人  雪燃归来
image.png

一、JavaScript与C++对比

javascript

class Person{
  constructor(x,y){
    this.x = x;
    this.y = y;
  }
}

function add(a,b){
  return a.x + b.y + b.y;
}
image.png
在程序运行时,动态计算属性偏移量
需要额外的空间存储属性名
所有对象的偏移量信息各存一份

C++

class C{
  public:
    int x;
    int y;
}
int add(C a, C b){
  return a.x + a.y + b.y
}
image.png
编译阶段确定属性的偏移量
用偏移量访问代替属性名访问
偏移量信息共享

二、静态类型和动态类型对比

静态类型语言 动态语言类型
对类型极度严格 对类型比较宽松
立即发现错误 Bug可能隐藏数月深圳数年
运行时性能好 运行时性能差
自文档化 可读性差

动态类型的语言支持者认为
性能是可以改善的(V8引擎),而语言的灵活性更重要
隐藏的错误可以通过单元测试发现
文档可以通过工具生成

三、语言类型象限

image.png
上一篇 下一篇

猜你喜欢

热点阅读