<script type="text/javascript">/* //沒塊作用域if(true) {var c = 3}console.log(c)*/var a =10,b =20functionfn(x){var a =100,c =300;console.log('fn()', a, b, c, x)functionbar(x){var a =1000,d =400console.log('bar()', a, b, c, d, x)}bar(100)bar(200)}fn(10)</script>
<script type="text/javascript">var a =10,b =20functionfn(x){var a =100,c =300;console.log('fn()', a, b, c, x)functionbar(x){var a =1000,d =400console.log('bar()', a, b, c, d, x)}bar(100)bar(200)}fn(10)</script>
<script type="text/javascript">var a =1functionfn1(){var b =2functionfn2(){var c =3console.log(c)console.log(b)console.log(a)console.log(d)}fn2()}fn1()</script>
<script type="text/javascript">functionfn1(){var a =2var b ='abc'functionfn2(){//執(zhí)行函數(shù)定義就會產(chǎn)生閉包(不用調(diào)用內(nèi)部函數(shù))console.log(a)}// fn2()}fn1()functionfun1(){var a =3varfun2=function(){console.log(a)}}fun1()</script>
常見的閉包
將函數(shù)作為另一個函數(shù)的返回值
將函數(shù)作為實(shí)參傳遞給另一個函數(shù)調(diào)用
<script type="text/javascript">// 1. 將函數(shù)作為另一個函數(shù)的返回值functionfn1(){var a =2functionfn2(){a++console.log(a)}return fn2}var f =fn1()f()// 3f()// 4// 2. 將函數(shù)作為實(shí)參傳遞給另一個函數(shù)調(diào)用functionshowDelay(msg, time){setTimeout(function(){alert(msg)}, time)}showDelay('atguigu',2000)</script>