JavaScript运算符和类型转换

作者: 追逐_e6cf | 来源:发表于2019-02-15 19:59 被阅读0次

    一、运算符

    1. +-*/%**(es6 a**n:a的n次方)。
    2. 赋值运算:=+=-=*=/=%=**=
    3. 算数运算不存在分数。
    4. 在加号的任意一侧,出现字符串的时候就是字符串的拼接。
    var a = 1;
    a /= 2;
    a %= 2;
    a **= 2;
    
    <div id="box">
        <p class="on"></p>
        <p></p>
        <p></p>
        <p></p>
        <p></p>
    </div>
    <script>
        var oBox = document.getElementById('box'),
            oP = document.getElementsByTagName('p'),
            index = 0;
        document.onclick = function(){
            oP[index].className = '';
            index++;
            // if (index>4) {
            //  index = 0;
            // }
            index = index%oP.length;
            oP[index].className = 'on';
        }
    </script>
    

    二、比较运算和逻辑运算

    1. ><==!=>=<====!==
    2. ><==若是数值和"数字"作比较,会有类型转换。若是字符串作比较,按照ASCII码表顺序挨个作比较。
    3. 逻辑运算符&&||!
    4. 若逻辑运算符的两侧都是布尔值时:&&两侧都是true则返回true,||两侧都是假则返回假。
    5. 若逻辑运算符的两侧不是布尔值时:&&遇到假就停止,并返回当前值,运算到最后则返回最后一个值;||遇到真就停止,并返回当前值,运算到最后则返回最后一个值;!取到的是布尔值,除了六个假值,其他的取非结果都是false。
    6. 运算顺序:!>&&>||
    var a = "abc",
        b = "acd";
    console.log(a>b);
    
    var a = 3>2 && 1>3;
    var a = 1>2 || 3>2 && 2>1; 
    
    var a = true;
        a = !a;
    console.log(a);
    
    //虽然没找到 但是返回的是一个空的类数组 是真的
    document.getElementsByTagName('p');
    console.log(document.getElementById('box'));//null
    
    var a = 5 && 1 && 6;
    console.log(a);
    
    var b = "" || 2 && 0;
    console.log(b);
    
    var c = "哈哈哈哈";
    c = !c;
    console.log(c);
    
    var n = 2;
    3>n && fn();
    function fn(){
        console.log(1);
    }
    

    三、显示类型转换

    1. Number();不会改变原有的数据类型,而是把转换之后的结果返回出来。
    2. 数值,并不是所有数值类型的数据就是数,还有一个不是数:NaN。
    3. null 经过Number(null)运算后结果为0。
    4. true和false将分别转换为1和0。
    5. undefined,返回NaN。
    6. 如果带非数字的字符串,返回NaN。
    7. 如果字符串是空的(不包含任何字符),则将其转换为0。
    8. 数组 空数组经过Number(null)运算后结构为0,如果是 一个值,并且按照数学逻辑是正确的数,那么会转换成数值;数组中有多个值,则被解释成为NaN。
    9. String();和alert 表现一致,所有的数据类型都能转成字符串。
    10. isNaN();返回布尔值true就是NaN "内部调用了Number()"。
    var  a = '123';
    // var a = function(){};
    // var a = undefined;
    // var a = ["123","456"];
    // var a = null;
    var b = Number(a);
    console.log(a);
    console.log(typeof a);
    console.log(b);
    console.log(typeof b);
    
    var a =NaN;
    console.log(a === a);//false
    var a = NaN;
    console.log(isNaN(a));//true
    
    var a = '';
    // var b = Boolean(a);
    var b = !!a;
    console.log(b);
    console.log(typeof b);
    

    四、parseFloatparseInttoFixed

    1. parseFloatparseInt如果空格不在字符串中间,在开始和结束的部分不会解释,从左往右进行解释,直到遇到不符合数学逻辑的字符位置,返回之前解释的数值类型,若开始就不符合数学逻辑,则解释为NaN。专门用于把字符串转换成数值
      都是忽略前导的空格
    2. parseFloatparseInt会把空数组解释成为NaN,数组中有多个值时,只解释第一个值,和Number不同。
    3. toFixed保留几位小数,会进行数值类型转换,成为了字符串,会四舍五入。
    var a = [null,'345'];
    console.log(parseInt(a));
    
    var a = 2.128212;
    console.log(a.toFixed(2));
    

    五、隐式类型转换

    1. 其他类型转字符串 + ""
    2. 其他类型转数值 用*1/1 (null-->0 undefined-->NaN)。
    3. 其他类型转布尔 !!
    4. a++a=a+1不一样,a++会有类型转换。
    var a = "123";
    a = !!a;
    
    var a = "123";
    // a++;//124
    a = a+1;//1231
    console.log(typeof a);
    

    相关文章

      网友评论

        本文标题:JavaScript运算符和类型转换

        本文链接:https://www.haomeiwen.com/subject/ibimeqtx.html