有下面的两段代码
let a = { b: 2}
let a1 = a.b + 1
let a2 = a.b + 2
let a = { b: 2}
let b = a.b
let a1 = b + 1
let a2 = b + 2
这两段代码在引擎内部执行时会不会是一样的?引擎会不会采取效率最优的方式进行执行?
有下面的两段代码
let a = { b: 2}
let a1 = a.b + 1
let a2 = a.b + 2
let a = { b: 2}
let b = a.b
let a1 = b + 1
let a2 = b + 2
这两段代码在引擎内部执行时会不会是一样的?引擎会不会采取效率最优的方式进行执行?
两段是不一样的,第二段多创建了一个b,就多了一个内存空间,也就是说b和a.b是完全不一样的两个内存,并不因为两个值一样就不创建变量b
引擎当然会采用更优的效率执行只是短短几行简单的代码也没啥可特别优化的
不过纠结这种问题也并不一定会加深对js的理解,专注于也行语法算法会更好,或者就专门了解一下v8的特性也来的更好
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读
不会优化,眼见为实,直接看编译后的字节码
证明编译后就和你代码中的写的一样的