113 lines
2.7 KiB
HTML
113 lines
2.7 KiB
HTML
<!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>
|
||
<script>
|
||
// 目标 :从全局访问函数内部的变量
|
||
// 方法1
|
||
// function f1() {
|
||
// var n = 999;
|
||
// return {
|
||
// n:n
|
||
// }
|
||
// }
|
||
|
||
// alert(f1().n)
|
||
|
||
// 方法2:
|
||
// function f1() {
|
||
// var n = 999;
|
||
// function show(){
|
||
// return n
|
||
// }
|
||
// show()
|
||
// }
|
||
// alert(f1()) //undefined F1函数没有返回值
|
||
// alert(show()) // show is not defined show()在函数f1的作用域中
|
||
// alert(f1()) //undeined F1函数没有返回值
|
||
|
||
// 作用域:
|
||
//
|
||
// window
|
||
// f1
|
||
// n
|
||
// show
|
||
|
||
// function f1() {
|
||
// var n = 999;
|
||
// function show(){
|
||
// return n
|
||
// }
|
||
// return show()
|
||
// }
|
||
// alert(f1())
|
||
|
||
// 方法三
|
||
// function f1(){
|
||
// var n=999;
|
||
// function show(){
|
||
// alert(n)
|
||
// }
|
||
// show()
|
||
// }
|
||
|
||
// f1()
|
||
|
||
function f1(){
|
||
var n=999;
|
||
function add(){
|
||
return n++
|
||
}
|
||
return add() //函数返回值
|
||
}
|
||
console.log(f1()) //999
|
||
var res=f1() //999
|
||
console.log(f1()) //999
|
||
|
||
// GO: f1
|
||
// ao: n, add
|
||
|
||
|
||
|
||
|
||
function f1(){
|
||
var n=999;
|
||
function add(){
|
||
return n++
|
||
}
|
||
return add //函数体
|
||
}
|
||
var res=f1() //通过return add 将add赋给res
|
||
// console.log(res)
|
||
// add 其实就是 全局访问f1中变量的一个桥
|
||
console.log(res()) //999
|
||
console.log(res()) //1000
|
||
|
||
|
||
// GO: f1,
|
||
// res:add
|
||
// AO: n
|
||
// add
|
||
|
||
</script>
|
||
</head>
|
||
|
||
<body>
|
||
<h3>作用域</h3>
|
||
<p>
|
||
函数内部的变量叫局部变量 只能再函数体内部访问 外部无法访问。 前提是 声明变量的方式是var
|
||
如果变量前面没有修饰,那么它就是 全局变量
|
||
</p>
|
||
<p>
|
||
闭包的形式上是父级函数返回的是子函数的函数体,从全局变量接收后就相当于把子函数塞给go,执行后不会被销毁
|
||
</p>
|
||
<p>
|
||
闭包的用处:一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。
|
||
</p>
|
||
</body>
|
||
|
||
</html> |