Javascript作用域的经典案例分析
2018-12-04 本文已影响10人
Aniugel
this指向小结预览:具体更加详细案例可参考https://blog.csdn.net/chenchunlin526/article/details/78889301
① 谁调用或者哪个对象调用this所在的函数,this就指向谁。
② 如果有嵌套调用,则其值会被绑定到调用this所在函数的最近的父对象。不论这个this出现在什么样的函数中,层次有多深,结构多复杂,只要看直接包含它的函数即可。简而言之,就是function的this永远指向直接调用它的对象。
③当使用new关键字构建一个新的对象,this会绑定到这个新对象。
④定时器中的this指向window对象。因为定时器就是全局函数,由window调用
⑤ this是Javascript语言的一个关键字,它代表函数运行时自动生成的一个内部对象,只能在函数内部使用。
<script>
var x = 30;
function demo() {
console.log(x); //undefined
var x = 10;//这一步可以化解为代码块2中的解构
console.log(x); //10
x = 20;//函数局部中声明了x所以为局部变量 此处覆盖了前面的10
console.log(x); //20
// function x() {};
console.log(this.x); //30 this永远指向直接调用它的对象它指向window所以结果和window一样
console.log(window.x); //30 全局对象
}
demo()
console.log(x);//全局变量30
</script>
进入函数的作用域后,js会首先读取变量和函数的声明,当变量和函数重名时(不管谁先谁后),函数名优先所以这个地方x指向了function x(){}。
function demo() {
console.log()// function x(){}
var x;
console.log(x);
x = 10;
function x(){}。
}