函数、递归 与 闭包(执行环境、变量对象 与 作用域链)
2013-05-08 20:51
561 查看
函数、递归 与 闭包(执行环境、变量对象 与 作用域链)
函数表达式1、JavaScript中定义函数有2钟方法:
1-1.函数声明:
function funcName(arg1,arg2,arg3){ //函数体 }
①name属性:可读取函数名。非标准,浏览器支持:FF、Chrome、safari、Opera。
②函数声明提升:指执行代码之前会先读取函数声明。即函数调用可置于函数声明之前。
1-2.函数表达式:
var funcName = function(arg1,arg2,arg3){ //函数体 };
①匿名函数(anonymous function,或拉姆达函数):function关键字后无标识符,name属性值为空字符串。在把函数当成值使用时,都可用匿名函数。
②类似其他表达式,函数表达式使用前需先赋值,故不存在"函数声明提升"那样的作用。
③ECMAScript中的无效函数语法:
if判断中的重复函数声明
浏览器JavaScript引擎修正错误差异:大多浏览器会返回第二个声明,忽略condition;FF则会在condition为true时返回第一个声明。
使用函数表达式可解决并实现:
if判断 函数表达式
2、递归
递归函数,是在一个函数中通过名字调用自身的情况下构成的。
解决方案
在非严格模式,使用递归函数时,用argument.callee代替函数名更保险
在严格模式下,使用argument.callee会出错,可用函数表达式 代替 函数声明:
函数表达式代替函数声明
4、闭包
指有权访问另一个函数作用域中的变量的函数。(常见形式为函数嵌套)
闭包 访问外部函数的this对象
包围函数的argument对象 也可通过此方法被闭包访问。
5、函数声明 转换为 函数表达式
JavaScript将function关键字昨晚函数声明的开始,但函数声明后面不能跟圆括号,所以function(){......}();会出错。
要将函数声明转换为函数表达式,需为函数声明加一对圆括号:
(function(){ //块级作用域 })();
相关文章推荐
- 函数、递归 与 闭包(执行环境、变量对象 与 作用域链)
- 深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
- 深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
- 深入Javascript函数与闭包(执行环境、变量对象与作用域链)详解
- 深入Javascript函数与闭包(执行环境、变量对象与作用域链)使用详解
- 函数执行时的作用域链和活动对象是怎么形成的及与闭包的关系
- JavaScript中的执行环境、变量对象和作用域链
- JavaScript执行环境 + 变量对象 + 作用域链 + 闭包
- JavaScript的小小总结!变量类型、对象声明、this用法、原型、匿名函数、闭包和自执行函数
- javascript中函数的执行环境、作用域链、变量对象与活动对象
- 谈谈自己对js闭包,执行上下文,作用域链,活动对象AO,变量对象VO的理解
- javascript 执行环境,变量对象,作用域链
- 执行环境,作用域链、活动对象的关系
- js中执行环境及变量的作用域链
- 15_函数(【六】执行环境和作用域链概念)
- 函数,作用域链,执行环境,闭包
- javascript中运用闭包和自执行函数解决大量的全局变量问题
- javascript高级变量提升和执行环境对象
- JavaScript之一: 闭包、执行环境、作用域链
- JavaScript核心:对象 原型链 构造函数 执行上下文栈 执行上下文 变量对象 活动对象 作用域链 闭包 This 总结