微信企业号可以做微网站吗,泰安集团网站建设费用,重庆seo网站设计,婚庆大气网站源码作用域 作用域#xff1a;是指变量可访问的范围#xff0c;他规定了如何查找变量#xff0c;也就是确定当前执行代码对变量的访问权限。 作用域有两种工作模式#xff1a; 静态作用域 #xff1a;又称为词法作用域#xff0c;在编译阶段就可以决定变量的引用#xff0c;…作用域 作用域是指变量可访问的范围他规定了如何查找变量也就是确定当前执行代码对变量的访问权限。 作用域有两种工作模式 静态作用域 又称为词法作用域在编译阶段就可以决定变量的引用由程序定义的位置决定和代码执行顺序无关用嵌套的方式解析。 动态作用域 在程序运行时候和代码的执行顺序决定用动态栈动态管理。 JavaScript采用词法作用域也就是说函数的执行依赖于变量的作用域这个作用域是在函数定义时决定的而不是函数调用时决定的 静态作用域与动态作用域 JavaScript 采用的是词法作用域函数的作用域在函数编译阶段就确定了。 1 script2 var a 10;3 function run() {4 console.log(a);//105 }6 function fo() {7 var a 20;8 run();9 }
10 fo();
11 /script 执行 run函数先从run 函数内部查找是否有局部变量 a如果没有就根据代码书写位置向上查找变量a也就是a等于10所以结果会打印 10。 假设JavaScript采用动态作用域让我们分析下执行过程 执行run 函数依然是从run 函数内部查找是否有局部变量 a。如果没有就从调用函数的作用域也就是fo函数内部查找 a变量所以结果会打印 20。 前面我们已经说了JavaScript采用的是静态作用域所以这个例子的结果是 10。 全局作用域、函数作用域 ES5在词法作用域工作模式一种规则下又分为全局作用域和函数作用域没有块作用域es6以后有。 全局作用域该作用域的变量、对象在任何地方都是可见的变量没有在函数内声明或者声明的时候没有带var就是全局变量拥有全局作用域window对象的所有属性拥有全局作用域在代码任何地方都可以访问。 在客户端javascript 中表示的浏览器窗口中window对象充当了全局对象拥有全局作用域。 1 script2 var a 10;3 function run() {4 console.log(a);//105 }6 function fo() {7 var a 20;8 run();9 }
10 fo();
11 /script
12 script
13 console.log(a)//10
14 /script 全局变量a 在run函数以及第二个script代码块中也是可见的 函数作用域在函数内声明的变量那么在函数内及其子函数内都是可见的在函数外是不可见的。 1 function fo(){
2 var myNameJoel;
3 }
4 console.log(myName)//ReferenceError: myName is not defined 块级作用域是指在{...}内的代码块每一段代码块都有各自的作用域且声明的变量在代码块外是不可见的 如 1 function run(){
2 var a10;
3 if(true){
4 var b10;
5 }
6 console.log(b);//如果存在块作用域那么这里打印这个b是会报错的
7 } 总结 单纯的作用域还是好理解javascript的作用域是静态作用域即应该关心代码的位置而不是调用的位置 如 1 script2 var x10;3 function fn(){4 console.log(x);5 }6 function show(f){7 var x20;8 (function(){9 f()
10 }());
11 }
12 show(fn);//10
13 /script 转载于:https://www.cnblogs.com/CandyManPing/p/7744514.html