什么是作用域?:
存储和访问变量,是任何一种编程语言最基本的功能之一,变量存在哪里?程序需要时如何找到它?这些问题需要一套良好的规则来规范,这套规则,就成为作用域。那又分为局部作用域和全局作用域
函数的作用域:
JS划分作用域也是用{ }来划分的,但是js中有效的限定作用域只有函数的{ }。
有时候我们常常会遇到类似这样的引用错误,那么我们可以往两个方面去考虑:1、看是不是变量名称拼写错误了。
2、如果变量每拼写错误,再看其作用域是否错域了。
为此我们来详述以下有关函数作用域的问题:
函数的变量论作用域来分的话,可以分为局部变量、全局变量两种。
局部变量:见名如意,局部变量就是在函数内部声明的变量,作用域只是这个函数的部分。
<script> funcaiton fun(){ var a=10; //a只可以在这个函数内部被调用 } </script>
全局变量:没有被任何函数包裹,在任何地方都可以使用。
<script> var a = 10; funcation fun(){ var b = a;//这里b为10; } </script>
伪全局变量:
function foo(){ a = 10;//声明变量不使用var console.log(a); } foo(); console.log(a);//这样就不会报错了
局部变量和全局变量二者的区别:
1、生命周期:就是看其二者啥时候可以被访问。全局变量随着程序而存在,只要程序不结束,全局变量就一直存在,但是这样有一个缺点,如果变量多的话,会使程序更繁琐。而局部变量,只是伴随这函数而存在,函数执行结束了,局部变量也就消失了。
2、命名空间:全局的命名空间是唯一的
如果全局变量起的是比较常见的名称,如果在后期对接代码时,可能会造成变量名称重复错误。
有时候需要和其他项目对接时候,我们可以设置一个匿名函数来避免命名问题,例如
+funcation(){ console.log("你好"); }();
这里是将匿名函数做了一次运算,函数经过运算变成了地址,然后被调用。
而且只要函数内部定义了一个变量,这个变量会被“提前声明”。
来源:https://www.cnblogs.com/lsy15835117503/p/12389727.html