123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Document</title>
- </head>
- <body>
- <!--
- 1、依次输出什么?
- global begin:undefined
- foo()begin:1
- foo()begin:2
- foo()begin:3
- foo()end:3
- foo()end:2
- foo()end:1
- global end:1
- 2、整个过程中产生了几个执行上下文?
- 5个
- -->
- <script>
- console.log('global begin:' + i)
- var i = 1
- foo(1)
- function foo(i) {
- if (i == 4) { //递归退出(终止)的条件
- return
- }
- console.log('foo()begin:' + i)
- foo(i + 1) //递归调用:在函数内部调用自己
- console.log('foo()end:' + i)
- }
- console.log('global end:' + i)
- console.log('测试题1----------------------')
- //测试题1
- //先执行变量提升,再执行函数提升
- function a() { }
- var a
- console.log(typeof a) //function
- console.log('测试题2------------------')
- //测试题2
- if (!(b in window)) {
- var b = 1
- }
- console.log(b) //undefined
- console.log('测试题3------------------')
- //测试题3
- var c = 1
- function c(c) {
- console.log(c)
- }
- c(2) //报错
- //测试题3
- var c = 1
- function c(c) {
- console.log(c)
- var c = 3
- }
- c(2) //报错
- </script>
- </body>
- </html>
|