当前位置:首页 > java > 正文

javascript匿名函数

  • java
  • 2024-06-13 00:23:48
  • 9713
⑴javascript中匿名函数和普通函数的区别匿名函数在声明时不需要有函数名。 匿名函数可以被视为函数类型的值
声明普通函数functionfunc(){...}可以认为是varfunc=function(){...};是相同的,但是普通函数会自动将函数名称“提升”到作用域的前面。 普通函数和匿名函数基本上就只有这个区别了
functionxxx(){
foo();//foo被带到了作用域的前面,所以foo函数可以这里正常调用
bar();//这里会报错bar未定义
functionfoo(){}
varbar=function(){};
}

⑵如何理解JS匿名函数
匿名函数的基本形式是(function(){...})();第一个括号包含函数体,第二个括号用于将参数传递给匿名函数并立即执行。 匿名函数的作用是避免全局变量污染和函数名冲突。
1.括号的作用
括号可以将我们的表达式组合分成块,每个块,即每对括号,都有一个返回值。 这个返回值实际上就是括号内表达式的返回值。 所以当我们用一对括号包围一个匿名函数时,这对括号实际上返回的是该匿名函数的一个函数对象。 因此,我们以与命名函数相同的方式引用一对括号加上匿名函数。 所以在这个引用变量后面添加一个参数列表就达到了普通函数的调用形式。
简单来说,括号有一个返回值,就是括号内函数或表达式的返回值,所以括号内函数的返回值等于括号内的返回值
2.匿名函数写法
方法一:调用函数并获取返回值。 强制运算符导致函数调用在
(function(x,y){
alert(x+y);
returnx+y;
}(3,4))中执行。 ;
步骤2.调用函数并获取返回值。 强制函数直接执行,然后返回引用。 然后调用引用的execute
(function(x,y){
alert(x+y);
returnx+y;
})(3,4);
这个方法也是jQuery和Mootools等许多库使用的流行调用方法。
方法3,使用void
voidfunction(x){
x=x-1;
alert(x);
}(9);
方法4,使用-/+运算符
-function(x,y){
alert(x+y);
returnx+y;
}(3,4);
+function(x,y){
alert(x+y);
returnx+y;
}(3,4);
--function(x,y){
alert(x+y);
returnx+y;
}(3,4);
++function(x,y){
alert(x+y);
returnx+y;
}(3,4);
方法五,使用波形符(~)
~function(x,y){
alert(x+y);
returnx+y;
}(3,4);
方法六,匿名函数执行用方括号括起来
[function(){
console.log(this)//浏览器的控制台输出窗口
}(this)]
方法七、添加typeof
typeoffunction(){
console.log(this)//浏览器的控制台输出窗口
}(this)
方法八、在Anonymous前添加deleteaddfunction
deletefunction(){
console.log(this)//浏览器的控制台输出窗口
}(this)
方法九、匿名函数前添加void
voidfunction(){
console.log(this)//浏览器的控制台输出窗口
}(this)
方法10,使用new方法,传递参数
newfunction(win){
console.log(win)//window
}(this)
方法11,使用new,不传递任何参数
newfunction(){
console.log(this)//这不是一个window
>
方法12,逗号运算符
function(){
console.log(this)//window
}();
方法13,按位异或运算符
^function(){
console.log(this)//窗口
}();
方法14,比较运算符
function(){
console.log(this)//window
}();
最后看一下错误的调用方法
function(x,y){
alert(x+y);
returnx+y;
}(3,4);
匿名函数的N种写法如下
匿名函数没有实际名称,也没有指针。 它们是如何进行的?
匿名函数的写法有很大不同。 ~
+号用于将函数声明转换为函数表达式。 我们总结一下
最常见的用法:
代码如下:
(function(){
alert('water');
})();
来自当然也可以使用参数:
代码如下:
(function(o){
alert(o);
})('water');
想要链式调用更多匿名使用函数?很简单:
代码如下:
(function(o){
console.log(o);
returnarguments.callee;
})('water')('down');
常见的匿名函数我们都知道了,我们来看看不常见的:
代码如下:
~(function(){
alert('water');
})();//写法有点酷~
代码如下:
voidfunction(){
alert('water');
}();//据说是效率最高的~
代码如下:
+function(){
alert('water');
}();
代码如下:
-function(){
alert('water');
}();
代码如下:
~function(){
alert('水');
}();
代码如下:
!function(){
alert('水');
}();
代码如下:
(function(){
alert('water');
}());//感觉有点像强制执行~