Defining variables in jQuery
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 开发者_JS百科without $(someVar) For example:
$(someVar).html();
someVar.html();
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.
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.
$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 .
精彩评论