一个关于javascript匿名函数的问题分析
function (){
alert('a function');
}
但是,上面的代码会报错。firebug提示:function statement requires a name,也就是:函数必须要有个名字。
奇怪的是,如果我用一对()把这个没有名字的函数包起来,就不会报错了。如:
代码如下:
(function (){
alert('a function');
})
(注意包裹函数的()!).虽然这样不会报错,但谁能知道这个函数是否声明成功了呢?是不是因为根本没声明所以才不报错呢?我们这样来测试:让函数自己执行一次:
代码如下:
(function (){
alert('a function');
}())
可以看到,函数执行了,表明函数是存在的。
同样,如果这个时候去掉包裹函数的(),则依然会报前面那个错,函数也执行不了。。。
代码如下:
function (){
alert('a function');
}()
这对包裹函数的(),真有这么重要?哪位高手解释一下原理呢?
相关推荐
-
Javascript 匿名函数及其代码模式原理
关于什么是匿名函数,及它带来的优势在本文就不深究了,先抛出一个常用的匿名函数: (function(){alert('yo')})() 很多同学知道怎么用这种匿名函数,却或许并不明白为什么这样写就能够调用匿名函数.也许知道后面的圆括号是执行前面的函数,而并不清楚前面的圆括号具有何种含义!本文将带你了解匿名函数的代码模式原理. OK,先来看看更多匿名函数调用模式: 复制代码 代码如下: (function(){alert(1);}()) (function(){alert(2);})() void
-
Javascript的匿名函数小结
一.什么是匿名函数? 在Javascript定义一个函数一般有如下三种方式: 函数关键字(function)语句: function fnMethodName(x){alert(x);} 函数字面量(Function Literals): var fnMethodName = function(x){alert(x);} Function()构造函数: var fnMethodName = new Function('x','alert(x);') 上面三种方法定义了同一个方法函数fnMetho
-
Javascript匿名函数的一种应用 代码封装
在一些Javascript库中可以看见这种写法: 复制代码 代码如下: (function(){ //所有库代码代码 })(); 说实话,对于js初学者的我来说.这个东西太吓人了,在这些JS库中,这个函数基本上把整个库的所有代码全括起来了,这种写法完全超越了我的常识.难道不应该好好的划分一下吗,难道不应该体现出层次和功能划分吗,怎么会一个函数搞定呢.我一开始完全不敢去细想它的道理.直到使用JS一段时间后,某一天一位同事在闲聊时说起了这个问题,我才知道这个叫匿名函数.匿名函数我并不陌生,C#,Py
-
通过javascript的匿名函数来分析几段简单有趣的代码
1.简单形式的封装调用 复制代码 代码如下: var userName = function() { return "jeff wong" } (); alert(userName); 上面的代码确实简单,我们可以逐步分解成下面的写法: 复制代码 代码如下: var anonymousFunc = function() { return "jeff wong" }; //匿名函数 var name = anonymousFunc(); //执行该函数 返回人名 al
-
(转载)JavaScript中匿名函数,函数直接量和闭包
原文出处: http://www.dnew.cn/post/196.htm 先看下下面几种写法 1.function f(x){return x*x;};f(x); 2.(function(x){return x*x;})(x); 3.(function(x){return x*x;}(x)); 第一种我们应该都很熟悉了,这是我们经常使用的写法.第二第三种都是匿名函数的写法. ------------------------------------------------------------
-
Javascript中的回调函数和匿名函数的回调示例介绍
复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript"> /* * 匿名函数自调的意义: 1.营造了一个封闭的空间 2.防止变量冲突 3.有选择性的对外开发(第三方框架都是对js这样封装
-
JavaScript函数的一些注意要点小结及js匿名函数
下面给大家介绍javascript函数 函数的基本语法是: function functionName(arg0,arg1,...,argN) { statements } 下面是个示例: function str(name,age){ document.write("hello my name is " + name + ". and i am " + age + " years old."); } str(" oliver"
-
详谈JavaScript 匿名函数及闭包
1.匿名函数 函数是JavaScript中最灵活的一种对象,这里只是讲解其匿名函数的用途.匿名函数:就是没有函数名的函数. 1.1 函数的定义,首先简单介绍一下函数的定义,大致可分为三种方式 第一种:这也是最常规的一种 复制代码 代码如下: function double(x){ return 2 * x; } 第二种:这种方法使用了Function构造函数,把参数列表和函数体都作为字符串,很不方便,不建议使用. 复制代码 代码如下: var double = new Functio
-
JavaScript 编写匿名函数的几种方法
错误模式:语法错误警告 复制代码 代码如下: function(){ // insert code here }(); 模式一:函数字面量 (Function Literal) 先声明函数对象,然后执行. 复制代码 代码如下: (function(){ // insert code here })(); 模式二:优先表达式 (Prior Expression) 由于 JavaScript 按照从内到外的顺序执行表达式,因此使用括号来强制执行已声明的函数. 复制代码 代码如下: (function
-
javascript 匿名函数的理解(透彻版)
复制代码 代码如下: (function(){ //这里忽略jQuery所有实现 })(); (function(){ //这里忽略jQuery所有实现 })(); 半年前初次接触jQuery的时候,我也像其他人一样很兴奋地想看看源码是什么样的.然而,在看到源码的第一眼,我就迷糊了.为什么只有一个匿 名函数又没看到运行(当然是运行了--),就能有jQuery这么个函数库了?于是,我抱着疑问来到CSDN.结果相信现在很多人都很清楚了(因为在我之 后也不乏来者,呵呵~).当一个匿名函数被括起来,然后
-
Javascript的匿名函数讲解
一.什么是匿名函数? 在Javascript定义一个函数一般有如下三种方式: 函数关键字(function)语句: 复制代码 代码如下: function fnMethodName(x){alert(x);} 函数字面量(Function Literals): 复制代码 代码如下: var fnMethodName = function(x){alert(x);} Function()构造函数: 复制代码 代码如下: var fnMethodName = new Function('x','al
-
JavaScript 匿名函数(anonymous function)与闭包(closure)
引入 匿名函数 闭包 变量作用域 函数外部访问函数内部的局部变量 用闭包实现私有成员 引入 闭包是用匿名函数来实现.闭包就是一个受到保护的变量空间,由内嵌函数生成."保护变量"的思想在几乎所有的编程语言中都能看到. 先看下 JavaScript 作用域: JavaScript 具有函数级的作用域.这意味着,不能在函数外部访问定义在函数内部的变量. JavaScript 的作用域又是词法性质的(lexically scoped).这意味着,函数运行在定义它的作用域中,而不是在调用它的作用
随机推荐
- Angular.js与Bootstrap相结合实现表格分页代码
- MySQL配置文件my.cnf中文详解附mysql性能优化方法分享
- python实现ftp客户端示例分享
- 实现文件和文件夹的复制的方法
- PHP exif扩展方法开启详解
- Python操作CouchDB数据库简单示例
- php使用Jpgraph绘制简单X-Y坐标图的方法
- CSS实现的一个图片放大展示的一种思路
- ajax 怎么设置超时(一个action执行了2遍)
- jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
- jquery中animate的stop()方法作用实例分析
- MS SQL Server游标(CURSOR)的学习使用
- MySQL优化之表结构优化的5大建议(数据类型选择讲的很好)
- jQuery实现的简洁下拉菜单导航效果代码
- jquery 根据name名获取元素的value值
- 基于jquery的滚动条滚动固定div(附演示下载)
- JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
- Mybatis实现数据的增删改查实例(CRUD)
- 解析java中的error该不该捕获
- 第二节 对象模型 [2]