我理解js'JIT编译器会在循环中数据类型发生变化的情况下优化热代码或热代码(就像数组中的一个元素是字符串而休息是int)。
但我有几个场景我无法理解代码是否会被优化
- 同一个循环用于两个数组,其中一个数组包含字符串和其他整数。编译器会在这里取消优化代码还是创建两个副本? (我知道它应该是两份)。
- 如果是对象数组。考虑所有场景,如
- 操纵子属性属于不同类型。
- 每个对象的相同子属性,但是一个对象缺少一个属性。
- 缺少属性不会在循环内被操纵。
- 缺少属性在循环内被处理(处理空的情况)。
- 所有对象都具有不同的属性(添加了新属性,或使用属性位置进行操作)。