摘要:目前,以下多种方式中,只能理解第一种和第二种,其他都不明白原理,各位大神能不能解释下方式,调用函数,得到返回值。强制运算符使函数调用执行方式,调用函数,得到返回值。
目前,以下多种方式中,只能理解第一种和第二种,其他都不明白原理,各位大神能不能解释下?
方式1,调用函数,得到返回值。强制运算符使函数调用执行
</>复制代码
javascript(function(x,y){
alert(x+y);
return x+y;
}(3,4));
方式2,调用函数,得到返回值。强制函数直接量执行再返回一个引用,引用再去调用执行
</>复制代码
javascript(function(x,y){
alert(x+y);
return x+y;
})(3,4);
这种方式也是很多库爱用的调用方式,如jQuery,Mootools。
方式3,使用void
</>复制代码
javascriptvoid function(x) {
x = x-1;
alert(x);
}(9);
方式4,使用-/+运算符
</>复制代码
javascript-function(x,y){
alert(x+y);
return x+y;
}(3,4);
+function(x,y){
alert(x+y);
return x+y;
}(3,4);
--function(x,y){
alert(x+y);
return x+y;
}(3,4);
++function(x,y){
alert(x+y);
return x+y;
}(3,4);
方式5,使用波浪符(~)
</>复制代码
javascript~function(x, y) {
alert(x+y);
return x+y;
}(3, 4);
方式6,匿名函数执行放在中括号内
</>复制代码
javascript[function(){
console.log(this) // 浏览器得控制台输出window
}(this)]
方式7,匿名函数前加typeof
</>复制代码
javascripttypeof function(){
console.log(this) // 浏览器得控制台输出window
}(this)
方式8,匿名函数前加delete
</>复制代码
javascriptdelete function(){
console.log(this) // 浏览器得控制台输出window
}(this)
方式9,匿名函数前加void
</>复制代码
javascriptvoid function(){
console.log(this) // 浏览器得控制台输出window
}(this)
方式10,使用new方式,传参
</>复制代码
javascriptnew function(win){
console.log(win) // window
}(this)
方式11,使用new,不传参
</>复制代码
javascriptnew function(){
console.log(this) // 这里的this就不是window了
}
方式12,逗号运算符
</>复制代码
javascript1, function(){
console.log(this) // window
}();
方式13,按位异或运算符
</>复制代码
javascript1^function(){
console.log(this) // window
}();
方式14,比较运算符
</>复制代码
javascript1>function(){
console.log(this) // window
}();
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/87585.html
摘要:主要区别是需要在声明模块时指定所有的依赖,通过形参传递依赖到模块内容中。 前言 昨天,公司同事问了我如下一个问题: showImg(https://segmentfault.com/img/bVWXYP?w=548&h=346); 说他在看一个插件时,看到了源码结构如截图所示,他知道(function(){})()是一种立即执行函数,但是在截图中,最后的那个圆括号里又写了一个函数fun...
摘要:在中通过关键字方式调用的函数都被认为是构造函数。这个新创建的对象的被指向到构造函数的。上的方法不起效果当然你要是这样的形式指定了返回的内容,它自然会原样返回啦工厂模型为了不使用关键字,构造函数必须显式的返回一个值。 个人博客原址 函数 函数式一块javascript代码,定义一次,可以被多次调用与执行,JS中的函数也是对象,所以JS函数可以像其他对象那样操作,和传递,所以也称函数对象函...
摘要:但是闭包也不是什么复杂到不可理解的东西,简而言之,闭包就是闭包就是函数的局部变量集合,只是这些局部变量在函数返回后会继续存在。可惜的是,并没有提供相关的成员和方法来访问闭包中的局部变量。 (收藏自 技术狂) 前言:还是一篇入门文章。Javascript中有几个非常重要的语言特性——对象、原型继承、闭包。其中闭包 对于那些使用传统静态语言C/C++的程序员来说是一个新的语言特性。本文将...
摘要:在中,一个未使用明确标识符的函数被称为一个匿名函数。记住在中,由关键字声明的变量是一个局部变量,而忽略了这个关键字则会创建一个全局变量。函数被赋值给一个局部变量,在外部无法访问它。这个函数表达式的变种被称为一个命名的函数表达式。 本文是@堂主 对《Pro JavaScript with Mootools》一书的第二章函数部分知识点讲解的翻译。该书的作者 Mark Joseph Obce...
阅读 2323·2021-09-22 10:56
阅读 1668·2021-09-07 10:11
阅读 1903·2019-08-30 15:54
阅读 2375·2019-08-30 15:44
阅读 2388·2019-08-29 12:40
阅读 3119·2019-08-28 18:25
阅读 1832·2019-08-26 10:24
阅读 3259·2019-08-23 18:39