The ! operator does a "binary invert", returning either "true" or "false". So:
true == !false
false == !true
So:
false == !!false
true == !!true
Combine that with what JavaScript considers "false" and you end up
with something like this:
// Test to see whether something is "null" or 0 (zero) or
"undefined" or "false"
var something = doSomething();
if ( !something )
doSomethingElse();
Anything that is NOT "null" or 0 (zero) or "undefined" or "false", is
considered "true".
Going back to the "!!s[k]". The problem is that the value of s[k]
might not be a boolean "true" or "false", so we need to convert it to
one.
So we "!" it first and that converts it to a boolean, though if it was
a "true" value it's now "false", and vice-versa. So we "!" it again
and it comes out the "correct" way.
Karl Rudd
On 3/14/07, Daemach <[EMAIL PROTECTED]> wrote:
>
> What does the !! do?
>
>
> Dan G. Switzer, II wrote:
> >
> >>Please add:
> >>
> >> StructKeyExists: function(s,k){
> >> for(var n in s){
> >> if (n == k) return true;
> >> }
> >> return false;
> >> },
> >>
> >>
> >>Shall we post additions and updates here?
> >
> > This would be much more efficient:
> >
> > StructKeyExists: function(s,k){
> > return !!s[k];
> > },
> >
> > However, it's also important to remember that a ColdFusion "structure"
> > isn't
> > the exact same thing as a JavaScript Object.
> >
> > -Dan
> >
> >
> > _______________________________________________
> > jQuery mailing list
> > [email protected]
> > http://jquery.com/discuss/
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/NEW-Plug-in%3A-cfjs-%28ColdFusionJavaScript%29-tf3386950.html#a9465975
> Sent from the JQuery mailing list archive at Nabble.com.
>
>
> _______________________________________________
> jQuery mailing list
> [email protected]
> http://jquery.com/discuss/
>
_______________________________________________
jQuery mailing list
[email protected]
http://jquery.com/discuss/