闭包练习(一)
在作用域中首先要處理兩件事:
- 形參賦值
- 變臉提升
下面幾道題
<script>window.onload = function () {test4();}function test1() {console.log(a);var a = 12;function fn() {console.log(a);var a = 13;}fn();console.log(a)/* a的三次輸出 分別是 undefine undefine 12 */}function test2() {console.log(a);var a = 12;function fn() {console.log(a);a = 13;}fn();console.log(a)/* a的三次輸出 分別是 undefine 12 13 */}function test3() {console.log(a);a = 12;function fn() {console.log(a);a = 13;}fn();console.log(a)/* 程序報錯 a 沒申明 */}function test4() {var foo=1;function bar() {if(!foo) {var foo=10;}console.log(foo);}bar();/* 10 */}</script>用圖解說最后一題:
首先是開始的window全局作用域
然后為函數開辟堆棧內存
最后分別在各自作用域內從上往下執行代碼
?
轉載于:https://www.cnblogs.com/yaobolove/p/8546175.html
總結
- 上一篇: 已启用 https://chai2010
- 下一篇: J2EE第一周作业