当前位置:首页 > 编程笔记 > 正文
已解决

作用域理解

来自网友在路上 167867提问 提问时间:2023-10-11 00:21:57阅读次数: 67

最佳答案 问答题库678位专家为你答疑解惑

概念:它是指对某一变量和方法具有访问权限的代码空间, 在JS中, 作用域是在函数中维护的。表示变量 或函数起作用的区域,指代了它们在什么样的上下文中执行,亦即上下文执行环境。

ES5的作用域只有两种:全局作用域和局部作用域

全局作用域

var a=1; //全局作用域
function fn1(){console.log(a)
};
fn1()

局部作用域

function fn1(){var a=1;   //局部作用域
};
fn1();
console.log(a);

全局变量和局部变量同名的坑

(1)在全局变量和局部变量不同名时,其作用域是整个程序。

(2)在全局变量和局部变量同名时,全局变量的作用域不包含同名局部变量的作用域。

var a=1;
function fn1(){console.log(a)var a = 2;
};
fn1();
console.log(a); undefined  //var声明会进行预解析  提前
1   //拿到的是全局变量

经典作用域面试题

var a = 10;    
function f1(){    var b = 2 * a;    var a = 20;var c = a+1;    console.log(b);    console.log(c);    
}    
f1()NaN   // 首先内部a会提前进行预解析 变量提升  是undefined * 2  
21    // 此时预解析 a=20 + 1 
var a=10;
function test(){console.log(a);a=100;console.log(this.a);    var a;console.log(a);
}
test();undefined  // 首先test'调用' 会去内部查找变量  var a 会进行预解析  此时只是声明了 但是没赋值10  //  this 相当于拿到的全局变量 指向的是window100   // 前面赋值 a = 100

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"作用域理解":http://eshow365.cn/6-18654-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!