views:

51

answers:

3

Can someone explain the difference between using a $ when defining variables in jQuery and not. Does it have any impact on performance?

var $someVar = $("a");
var someVar = $("a");

Also, what is the difference in calling variables with and without $(someVar) For example:

$(someVar).html();
someVar.html();
+1  A: 

There is no performance difference, it's just an identifier. $foo is often used to refer to jquery objects by experienced authors so as to not confuse them with non-jquery objects in complex scripts.

As for the $() wrapping, you can reference a DOMElement and wrap it in jQuery, eg

var e = document.body; $(e).hide()

If we tried e.hide() there would be no defined method as the body element doesn't have that method, it's only provided by the jQuery prototype chain.

meder
+3  A: 

In your first snippet, there is no difference between those two. It's just a "notification" that this variable is holding a wrappet set of jQuery objects, which is commonly used by some developers.

In your second snippet you are actually doing two different things. You are wrapping someVar into a jQuery object and then access a jQuery method (html()). In this example someVar could contain a DOM element or a selector string like "#some_element_id".

The other line assumes that someVar already IS a jQuery object, otherwise this call would fail.

jAndy
+1  A: 

$somevar and somevar are both the same . It is a convention to use a $ before a jquery variale so that you know that it is a jquery wrapped object .
( btw, $ were introduced in javascript to distinguish machine generated code for human written code )
However , $(somevar) and somevar are completely different . $(somevar) -> You are calling the Jquery function and passing it somevar . You can also read this as Jquery(somevar) . So if somevar is referring to a dom id , the dom object would be wrapped by jquery and returned .

jmhowwala
+1 for ( btw, $ were introduced in javascript to distinguish machine generated code for human written code )
NM