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>
网友评论