变量的做用域问题

变量的做用域:面试

变量的做用域是变量的生命期和做用范围,它取决于变量的声明位置。根据做用域的不一样能够将变量划分为局部变量和
全局变量;局部变量在过程的内部声明而具备局部做用域,过程外部任何命令都不能访问,每次执行过程建立的变量均随此
过程的结束而销毁;全局变量在过程的外部声明而具备全局做用域其值能被ASP页面上的任何脚本命令访问和修改,全局变
量随脚本运行的结束而消亡。函数

JS中没有块级做用域,{}就是一个块,可是JS没有这样的块级做用域,由于在if或是while或是for等等{}设置的变量是能够被外部或是全局使用域访问的。spa

JS中只有两个做用域,一个是局部做用域(函数的内部),一个是全局做用(两个script之间)blog

函数内是能够访问全局做用域的成员。ip

全局做用域是没法访问函数内部的变量的。作用域

 

 

例:
<script>
function f1(){ // b c 没有var声明,是属于全局变量
var a = b = c = 9;
console.log(a);
console.log(b);
console.log(c);

f1();
console.log(c);
console.log(b);
console.log(a); // 当前做用域内没有变量a所以报错了

</script>

 

在控制台输出结果以下:io

 

函数的预解析:console

  就是JS是执行代码以前,会将全部的代码先提早扫描一遍,将变量的声明和函数的声明会提到,当到做用域(全局或局部)的最前面。function

 在作面试题的,必定要注册JS的预解析机制。变量

相关文章
相关标签/搜索