当前位置: 首页 > Web前端 > JavaScript

作用域和变量

时间:2023-03-27 16:14:45 JavaScript

scope作用域是一个独立的站点,因此变量不会被泄露或暴露。也就是说作用域最大的用处就是隔离变量,不同作用域的同名变量不会发生冲突。全局作用域和局部作用域最外层函数和定义在最外层函数外的变量具有全局作用域window对象的所有属性具有全局作用域JS命名冲突当变量与函数同名时,函数优先,因此现有函数的声明和变量声明一样,结果指向函数声明,无论函数同名还是变量同名,后者总是重写前者。必须首先声明var。函数作用域functionoutFun2(){varinVariable="innervariable2";}outFun2();//必须先执行这个函数,否则不知道里面是什么console.log(inVariable)//未捕获ReferenceError:inVariableisnotdefinedinVariable没有在全局范围声明,所以在全局范围取值会报错。我们需要在全局范围内声明它。它不会报告错误。全局和本地范围可以在代码中的任何位置访问的对象具有全局范围。1:最外层函数和定义在最外层函数外的变量具有全局作用域。2:所以没有定义直接赋值的变量被自动声明为具有全局作用域。functionoutFun2(){variable="未定义的直接赋值变量";varinVariable2="innervariable2";}outFun2();//必须先执行这个函数,否则不知道里面是什么console.log(variable);//未定义直接赋值变量console.log(inVariable2);//inVariable2isnotdefined3:window对象属性具有全局作用域。但是全局作用域有缺点,变量自定义没有函数包装。很容易引起命名冲突。作用域是分层的,内层可以访问外层作用域变量,但外层不能访问内层。块级作用域块级作用域可以通过let和const来声明,不能在指定块的作用域外访问。在循环中使用绑定块级作用域varbtns=document.getElementsByTagName('button')for(leti=0;i