js立即执行定义的方法

js 直接执行定义好的方法,出现问题

在我的印象中,js定以后,是可以直接执行的,就是在后面加一个(),标志着直接执行,但是最近写了一个方法,用了一下却不行,如下:

function doSomeThing() {
    console.info('hello,world');
}();

解决方法

后来查资料,发现这种写法确实不行,但是确实是可以立即执行的,即用 var xxx = function 这种方式,如下:

var someThing = function() {
    console.info('hello,world');
}();

这种写法是可以的。

分析原因

js的这两种写法,其实是有细微差别的。

第一种,是一种方法的定义

定义方法就是为了后面调用。
假如你仅仅是为了就立即执行一次,以后就再也不执行了,那完全没必要定义方法,直接写语句就可以了。
所以这里设计者不让立即执行,最多你之后再调用一次就行了.

第二种,是定义了一个变量,只不过这个变量的类型正好是一个方法。

定义变量就是为了后面使用。
变量的使用场景比较多,假如变量是方法的话,可以执行,但是作为一个变量,也可以用于其他用途,比如作为参数传给另一个方法。
所以设计者在这里让他可以立即执行一次,因为以后可能就不执行了.

总之:就是胡诌一种原因,设计成怎样都看设计者的心情,就像老子为什么要写道德经一样,因为老子愿意!!没错,记住就行了.

<span class="timestamp-wrapper"><span class="timestamp"><2019-01-24 Thu></span></span>

还有一种写法,记录一下,用()括起来

(function() {
    console.info('hello,world');
})();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 0. 写在前面 当你开始工作时,你不是在给你自己写代码,而是为后来人写代码。 —— Nichloas C. Zak...
    康斌阅读 5,375评论 1 42
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,159评论 1 32
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,824评论 1 45
  • 每个少女都曾在心里有过一个白马王子,希望有一天能成为他的白雪公主,为了让他喜欢上自己,做了一切的傻事,例如写许愿瓶...
    Caroline女王阅读 277评论 0 0
  • 今天是我每天一篇文章的第36篇。 昨天有抛出一个做电商必然要面对的销售公式:销售=流量*转化率*客单价!这...
    很温暖阅读 283评论 0 1