js对立即执行函数的理解
2015-11-18 00:00
666 查看
摘要: js对立即执行函数的理解
js函数的两个概念:函数声明、函数表达式
函函数声明:function fnName () {…};使用function关键字声明一个函数,再指定一个函数名,叫函数声明。
函数表达式 var fnName = function () {…};使用function关键字声明一个函数,但未给函数命名,最后将匿名函数赋予一个变量,叫函数表达式,这是最常见的函数表达式语法形式。匿名函数也属于函数声明。
函数声明和函数表达式不同之处在于:
一、Javascript引擎在解析javascript代码时会有‘函数声明提升’(Function declaration Hoisting),函数表达式不会。
二、函数表达式后面可以加括号立即调用该函数,函数声明不可以,只能以fnName()形式调用 。所以,要在函数体后面加括号就能立即调用,则这个函数必须是函数表达式,不能是函数声明[b](因此也不能使匿名函数形式)[/b]。
()、!、+、-、=等运算符,都可以将函数声明转换成函数表达式,消除javascript引擎识别函数表达式和函数声明的歧义,告诉javascript引擎这是一个函数表达式,不是函数声明,可以在后面加括号,并立即执行函数的代码。 加括号是最安全的做法,因为!、+、-等运算符还会和函数的返回值进行运算,有时造成不必要的麻烦。
这样写的用处在于:由于javascript中没用私有作用域的概念,但可以通过函数作用域链的特性模仿一个私有作用域,在该作用域内可以访问外部的变量,但不能从外部访问这个作用域内部的变量,从而避免对全局变量的污染。俗称“匿名包裹器”或“命名空间”
js函数的两个概念:函数声明、函数表达式
函函数声明:function fnName () {…};使用function关键字声明一个函数,再指定一个函数名,叫函数声明。
函数表达式 var fnName = function () {…};使用function关键字声明一个函数,但未给函数命名,最后将匿名函数赋予一个变量,叫函数表达式,这是最常见的函数表达式语法形式。匿名函数也属于函数声明。
函数声明和函数表达式不同之处在于:
一、Javascript引擎在解析javascript代码时会有‘函数声明提升’(Function declaration Hoisting),函数表达式不会。
二、函数表达式后面可以加括号立即调用该函数,函数声明不可以,只能以fnName()形式调用 。所以,要在函数体后面加括号就能立即调用,则这个函数必须是函数表达式,不能是函数声明[b](因此也不能使匿名函数形式)[/b]。
(function(a){ console.log(a); //firebug输出123,使用()运算符 })(123); (function(a){ console.log(a); //firebug输出1234,使用()运算符 }(1234)); !function(a){ console.log(a); //firebug输出12345,使用!运算符 }(12345); +function(a){ console.log(a); //firebug输出123456,使用+运算符 }(123456); -function(a){ console.log(a); //firebug输出1234567,使用-运算符 }(1234567); var fn=function(a){ console.log(a); //firebug输出12345678,使用=运算符 }(12345678)
()、!、+、-、=等运算符,都可以将函数声明转换成函数表达式,消除javascript引擎识别函数表达式和函数声明的歧义,告诉javascript引擎这是一个函数表达式,不是函数声明,可以在后面加括号,并立即执行函数的代码。 加括号是最安全的做法,因为!、+、-等运算符还会和函数的返回值进行运算,有时造成不必要的麻烦。
这样写的用处在于:由于javascript中没用私有作用域的概念,但可以通过函数作用域链的特性模仿一个私有作用域,在该作用域内可以访问外部的变量,但不能从外部访问这个作用域内部的变量,从而避免对全局变量的污染。俗称“匿名包裹器”或“命名空间”
相关文章推荐
- 何为js的语句声明
- 《JavaScript高级程序设计》第7、8、9章 函数表达式、BOM和客户端检测
- JS中定义函数的两种方式
- js函数以及js函数表达式
- js通过为function设置自定义属性的方法解决闭包陷阱
- js类数组对象使用数组方法的安全方式
- js caller的妙用以及new关键字与prototype的联系
- Json-lib-----1、简介
- js数组分页
- js日期格式化的方法
- 五个你必须知道的javascript和web 调试技术
- Jsp九大内置对象
- js-案例:省市连动下拉框
- 细说javascript的对象
- 恶补JavaScript第一篇
- 第22篇 js中的this指针的用法
- 用ajax获取json数据并在网页上面显示小例子
- js实现接口
- url解析函数
- JSP中退出登录销毁Session