JSLint error: Move the invocation into the parens that contain the function

别来无恙 提交于 2019-12-21 21:23:04

问题


How can i make this code jsLint Happy ?

;(function ( $, window, document, undefined ) {
  //some code 
})( jQuery, window, document );

It advises me to write it this way ? Will there be any difference ? What do i do ?

(function ( $, window, document, undefined ) {
  //some code 
}( jQuery, window, document ));

回答1:


I'm copying my answer from the next question in the JSLint stack. Here's why Crockford says that the second way is better.

From http://javascript.crockford.com/code.html

When a function is to be invoked immediately, the entire invocation expression should be wrapped in parens so that it is clear that the value being produced is the result of the function and not the function itself.

To expand a little, JavaScript isn't, as we know, a strongly typed language. It's not uncommon to push a function into a variable, and, in fact, it could be more common to push a function into a var than a value from an immediately invoked anonymous function.

So it's worth having a little syntactic sugar in your code to show when you're invoking rather than setting a reference to a function.

Don't get bogged down by those that complain that it's impossible to separate Douglas Crockford's opinions from JSLint. They're right, and that's good!

In a big enough project, why would you have to disagree with him? I'm never seen Crockford require something that's objectively wrong. All of the rules in JSLint are arguably good ones, and standardization of code in shared projects is often A Very Good Thing. He's teaching you good (!bad?) habits for free. It's worth playing along.

(The leading semi-colon, I see where you're going -- defensive is good. But if everyone used JSLint... I still feel your pain there a little.)



来源:https://stackoverflow.com/questions/25474275/jslint-error-move-the-invocation-into-the-parens-that-contain-the-function

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!