
一、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;
}

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

编译阶段确定属性的偏移量
用偏移量访问代替属性名访问
偏移量信息共享
二、静态类型和动态类型对比
静态类型语言 | 动态语言类型 |
---|---|
对类型极度严格 | 对类型比较宽松 |
立即发现错误 | Bug可能隐藏数月深圳数年 |
运行时性能好 | 运行时性能差 |
自文档化 | 可读性差 |
动态类型的语言支持者认为
性能是可以改善的(V8引擎),而语言的灵活性更重要
隐藏的错误可以通过单元测试发现
文档可以通过工具生成
三、语言类型象限

网友评论