當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
javascript --- [小练习]变量提升、优先级综合
生活随笔
收集整理的這篇文章主要介紹了
javascript --- [小练习]变量提升、优先级综合
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- 求下列函數輸出結果
- 首先由變量提升階段
-
然后到執行階段,從上到下一行行執行
-
Foo.getName = function(){}
- Foo.prototype.getName = function(){}
- getName = function(){}
-
Foo.getName() , 順著內存地址找輸出2
-
getName(): 輸出4
-
Foo().getName(),先執行Foo,在執行getName
-
執行Foo
- // ctx: Foo getName(全局) = () -> 1 // return this // 由于Foo函數是在全局環境下執行,因此this執行window return window // 執行完即銷毀
-
執行完畢后,Global中的getName改變
- // Global Foo = 0xffffff00 getName = () -> 1
-
此時,相等于執行window.getName(), 直接輸出1
-
-
getName(),輸出1
-
new Foo.getName(): 根據優先級 new ...是18, 而.是19,因此先執行后面的
- Foo.getName(): 輸出2
- 再執行new
-
new Foo().getName(): new Foo()的優先級是19, 和.是一樣的,因此從左往右執行
- new Foo(): 創建一個Foo實例f,然后執行f.getName方法.
- 實際上就是執行Foo.prototype.getName,會輸出3
-
new new Foo().getName(): 這個可以看作: new ((new Foo()).getName()),還是輸出3
-
綜上所述輸出: 2 4 1 1 2 3 3
總結
以上是生活随笔為你收集整理的javascript --- [小练习]变量提升、优先级综合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 买个社区团购小程序多少钱呢?微信社区团购
- 下一篇: threejs坐标转换