matlab中plot函数用法_JavaScript中函数表达式和自执行函数表达式的用法

JavaScript是每个前端人员必须要掌握的知识点,在日常代码中,我们经常都会用到自执行函数表达式。今天要给大家分享的就是JavaScript中函数表达式和自执行函数表达式的用法。

立即调用函数表达式

给函数体加大括号,在有变量声明的情形下,没有任何区别

但是,如果只是【自动执行】的情形下,就会不同

因为,一个匿名函数,不赋值或函数体不加小括号,是不能自动执行的

//以下情形并无差别var count100 = function getCount100(){ return(100) }();//100var count200 = (function getCount200(){ return(200) })();//200,加小括号和count100没有区别var count = (function getCount(n){ return(n) })(300);//300,传参的情形//不赋值变量,函数体加小括号,自动执行(function aaa(){console.log("aaa")})();// aaaconsole.log(aaa);//aaa is not defined//一个匿名函数,函数体不加小括号,是不能自动执行的function bbb(){console.log("bbb")}();//Unexpected token )

==实际上【自执行函数表达式】可以有很多复杂的情形==,比如下边的复杂例子

b2520594c1483c90c6611e70d3a5a00f.png
//函数声明置于小括号中,没有自执行( function fn(){console.log("aaa");return "bbb"} );console.log("fn res is " + fn);// fn is not defined//函数声明置于小括号中,且自执行( function fn(){console.log("aaa");return "bbb"}() );//输出aaaconsole.log("fn res is " + fn);// fn is not defined//函数声明置于小括号中,且自执行,注意,负责执行的一对小括号移到了外部( function fn(){console.log("aaa");return "bbb"} )();//输出aaaconsole.log("fn res is " + fn);// fn is not defined//函数声明置于小括号中,函数未执行但将其赋值给fn( fn = function aaa(){console.log("aaa");return "bbb"} )console.log("fn res is " + fn());//fn res is bbb//函数声明置于小括号中,函数执行,并且将其赋值给fn( fn = function aaa(){console.log("aaa");return "bbb"}() );//输出aaaconsole.log("fn res is " + fn);//fn res is bbb//函数声明置于小括号中,将其赋值给fn,并且在外部执行之(注意末尾小括号位置)( fn = function aaa(){console.log("aaa");return "bbb"} )();//输出aaaconsole.log("fn res is " + fn());//再次输出aaa,并输出fn res is bbb// 匿名函数在自执行,注意末尾小括号位置( function(){console.log("aaa");return "bbb"} )();//输出aaa// 匿名函数在自执行,可见和上边的例子效果一致( function(){console.log("aaa");return "bbb"}() );//输出aaa//在括号外赋值的函数表达式,例一。以下三例的结果是一致的var fn = function aaa(){return "bbb"}();console.log("fn is res " + fn);//fn is res bbb//例二var fn = (function aaa(){return "bbb"})();console.log("fn is res " + fn);//fn is res bbb//例三var fn = (function(){return "bbb"})();console.log("fn is res " + fn);//fn is res bbb-------//正常的函数,注意fn的name属性自动设置为fnfunction fn(){return "bbb"};console.log(fn.name);//fnconsole.log("fn is res " + fn());//fn is res bbb//函数表达式,注意fn的name属性是fnvar fn = function(){return "bbb"};console.log(fn.name);//fnconsole.log("fn is res " + fn());//fn is res bbb//函数表达式,注意fn的name属性是aaavar fn = function aaa(){return "bbb"};console.log(fn.name);//aaaconsole.log("fn is res " + fn());//fn is res bbb

对于如此多的不同情形,可以总结如下:

在不赋值的情形下,在小括号中的函数或者函数表达式,被阻止声明为一个全局的变量,同时其内部是可执行的

但如果其在小括号中,被赋值给了某一变量,那么该函数或者函数表达式就会被曝露出去,可以在外部调用

函数表达式在赋值给一个变量时,该变量会拥有一个name属性,它的值取决于函数表达式是否为匿名函数

如果为匿名函数,则变量的name属性值为自身,如果为具名函数,则变量的name属性值为具名函数的name值

影响表达式执行的末尾的一对小括号,对词法上的影响很小

即,影响函数表达式的因素,由大到小是: 赋值与否 => 匿名与否 => 何时执行

以上就是关于JavaScript中函数表达式和自执行函数表达式的用法,想要了解更多web前端的学习资料,可以关注“武汉千锋”微信公众号!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值