<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="btn" style="width:100px;height: 20px;background-color: #c3c3c3;">
<span id="txtnum">0</span>
</div>
<!--
一、函数作用域查找:看函数定义在哪个作用域下,与函数在哪执行无关
二、this
1、函数中this与它在哪执行的代码没有任何关系;2、若函数名前有点则this就是点前的对象 若没有就是window
3、自执行函数永远是window 4、给Dom绑定事件时 this就是该元素 5、类构造函数中this是当前类的实例
-->
<script type="text/javascript">
var num = 12;
function fun() {
var num = 120;
return function() {
console.log(num);
};
};
var f = fun();
f(); //120
! function() {
var num = 100;
f(); //120
}
function fn() {
var i = 10;
return function(n) {
console.log(n + (++i));
}
};
var f = fn();
f(10); //10+11
f(20); //20+12
fn()(10); //10+11
fn()(20); //20+11
function thsFun() {
console.log(this)
}
thsFun(); //this->window
//document.getElementById("div").onclick = thsFun; //this->div Dom
//document.getElementById("div").onclick = function() {
// fn(); //this->window
// }
var obj = {
fn: thsFun
};
obj.fn(); //this->obj
function test() {
thsFun();
};
test(); //this->window
var oo = {
sum: function() {
console.log(this);
thsFun();
}
};
oo.sum(); //this->window
var divbtn = document.getElementById("btn");
var txtspan = document.getElementById("txtnum");
divbtn.count = 0;
divbtn.onclick = function() {
// var count = parseInt(txtspan.innerHTML);
// count++;
txtspan.innerHTML = ++this.count;
}
</script>
</body>
</html>