下面是摘出的一段js代码:all = !!all;
for (key in this.extraParams) {
(all || !this.persistent[key]) && (delete this.extraParams[key]);
}这问这里面的!! || && 用法是什么意思!

解决方案 »

  1.   

    !!就是两个非。。
    !!false == false
    var a = 123;
    !!a == true;
    这里应该作用是将all转换成boolean,,不过在JS里面完全没必要,引擎会自动将其装箱的这代码纯粹卖弄而已而||就是“或”了,如
    var b = 123;
    var c = a || b; // c被赋值为123,因为a未定义,所以引擎认为它为false
    true || false == true
    false || false == false&&就是“与”了
    true && true == true
    false && true == false
      

  2.   

    (all || !this.persistent[key]) && (delete this.extraParams[key]);
    这个代码纯粹无聊。极差的可读性。。其实它意思是(all || !this.persistent[key])为true的时候执行(delete this.extraParams[key]);if (all || !this.persistent[key]){
       delete this.extraParams[key];
    }
      

  3.   

    !是逻辑非运算符。
    !!是两个逻辑非。
    当!的时候会强制把后面的变量转换成布尔值。
    !!的作用只是强制转换成布尔值而已。
    &&是逻辑与,根据就近原则&&的左侧成立的时候才会执行右边的语句
    ||是逻辑或,左侧的不成立的时候才会执行右边的语句,若左侧成立,则不继续执行。
    例如:
    window.a && alert("1&&");
    window.a || alert("1||");
    var a = true;
    window.a && alert("2&&");
    window.a || alert("2||");
      

  4.   

    1-3楼的答案让我对||和&&有了清晰的理解!
    对于!!运算符:
    all = !!all; 
    这句话是将all转化为boolean类型,并且只有当初始all为1或true时,才返回true,否则都是false。
    这样理解对吗?
      

  5.   


    !就是"非"运算符
    其实一个!,就能会将其转换成boolean了
    js很多运算符都有二义性,如"+",
    +false, 其实就是将false转换成正数值型
      

  6.   

    哦  多谢楼上了 
    具体的结果(all什么情况下为true或false)我测试后再贴上来,现在还没有测试环境,要等一下了