进一步加强网站建设管理,建筑考试培训网,企业邮箱注册申请免费注册入口,建设门户网站需要注意什么JavaScript 函数#xff08;作用域以及闭包#xff09; ・执行环境及作用域 执行环境定义了变量或函数有权访问的其他数据。 每个执行环境都有一个与之关联的变量对象#xff0c;环境中定义的所有变量或函数都保存在这个对象中#xff0c; 虽然我们编写的代码无法访问这个对… JavaScript 函数作用域以及闭包 ・执行环境及作用域 执行环境定义了变量或函数有权访问的其他数据。 每个执行环境都有一个与之关联的变量对象环境中定义的所有变量或函数都保存在这个对象中 虽然我们编写的代码无法访问这个对象但解析器在处理数据时会在后台使用它。 当代码在一个环境中执行时会创建变量对象的一个作用域链。 作用域链的作用是保证对执行环境有权访问的所有变量和函数的有序访问 作用域的前端始终是当前执行的代码所在环境的变量对象。 ・函数表达式 定义函数的两种方式 函数声明和函数表达式 函数声明的重要特征是函数声明提升及在执行代码之前会先读取函数声明。 sayHi(); function sayHi() { ...... } ・闭包 概念 有权访问另一函数作用域中的变量的函数。 function(value1, value2) {if(value1 value2) {return -1;} else if(value1 value2) {return 1;} else {return 0;}
}var result compare(5, 10); 闭包会携带包含它的函数的作用域因此会比其他函数占用更多的内存。 另一个副作用 闭包只能取得包含函数中任何变量的最后一个值。因为闭包所保存的是整个变量对象而不是某个特殊的变量。 function createFunctions() {var result new Array();for(var i0; i10; i) {result[i] function() {return i;};}return result;
} 返回的函数数组中的每个函数的返回值都为10。 解决方案 function createFunctions() {var result new Array();for(var i0; i10; i) {result[i] (function(num) {return function() {return alert(num);};})(i);}return result;
} ・this对象 全局函数中this等于window; 函数被作为某个对象的方法调用时this等于那个对象 匿名函数的执行环境具有全局性this通常指向window。 var name The Window;var object {name: My Object,getNameFunc: function() {return function() {this.name;};}
};alert(object.getNameFunc()());// 执行结果 The Window 第一步 object.getNameFunc()作为函数方法调用this指向的是object 第二步 object.getNameFunc()()作为匿名函数调用this指向的是window; 转载于:https://www.cnblogs.com/dreamerjdw/p/6233534.html