声明一个普通的函数 function func() { ... } 可以认为和var func = function() { ... }相同, 但是普通函数会自动把函数名"提到"作用域的最前面, 基本上普通函数和匿名函数就只有这一个区别
function xxx() {
foo()//foo被提到了作用域的最前面, 于是这里可以正常调用foo函数
bar()//这里会报错bar是个undefined
function foo(){}
var bar = function(){}
}
//作用域和匿名函数没用任何关系//js中函数内的变量在函数内的任何地方都能访问
//window对象下定义的变量均为全局变量,如:
var i = 1 //这个变量就是全局变量
function fun(){
var j = 1 //这个j是局部变量,在fun里面的任何地方都能访问
}
//说匿名函数
$(function(){
//这个function(){}就是匿名函数
})
var fun1 = function(){
//这个function(){}也是匿名函数
}
//论匿名函数的重要性
//js中的匿名函数的重要性不亚于三元运算
//不过js中任何能用匿名函数实现的代码用普通函数都能实现
//就好比任何三元运算都能用if实现一样
$("body").click(function(){
//jquery最基本的绑定click事件的一种
})
//上面这里用的就是匿名函数,可以用下面的代码代替
function clickHandle(){
}
$("body").click(clickHandle)
//说自运行函数
(function(){
//这里还是匿名函数
})()
//上面的自运行函数(闭包操作)可以改成下面这样
function tempFun(){
}
tempFun()
//有帮助的话麻烦采纳下,手打不易,谢谢!
JS中的匿名函数的用法及优缺点 匿名函数可以有效的保证在页面上写入Javascript,而不会造成全局变量的污染。 这在给一个不是很熟悉的页面增加Javascript时非常有效,也很优美。 一、什么是匿名函数? 在Javascript定义一个函数一般有如下三种方式: 函数关键字(function)语句: function fnMethodName(x){alert(x)} 函数字面量(Function Literals): var fnMethodName = function(x){alert(x)} Function()构造函数: var fnMethodName = new Function('x','alert(x)') 上面三种方法定义了同一个方法函数fnMethodName, 第1种就是最常用的方法,后两种都是把一个函数复制给变量fnMethodName,而这个函数是没有名字的,即匿名函数。 实际上,相当多的语言都有匿名函数。 二、函数字面量和Function()构造函数的区别 虽然函数字面量是一个匿名函数,但语法允许为其指定任意一个函数名,当写递归函数时可以调用它自己,使用Function()构造函数则不行。