表达式运算符和结构分支

68 阅读1分钟

一.运算符的优先级

+ - / * && || () -= -- ++ 

二.js的舍入误差

console.log(0.1+0.2)  //0.3000000000000004
误差的原因:在浮点数转换成二进制的时候位数太多
二进制转换成十进制时精度的丢失,所以产生的误差
解决方案:
    方案1console.log(parseFloat((0.1+0.2).toFixed(2)))
        //小数会舍去
    方案2:
        将小数转换成整数进行运算
            function add(num1,num2){
                var m = Math.pow(10,2)
                return (num1 * m + num2 * m) / m
            }
            console.log(add(0.1,0.2))

三.开发中如何优化for循环

1.for(var i = 0;i<arr.length;i++){} 
//对变量进行优化,避免每次去读取长度:
for(var i = 0,len=arr.length;i<len;i++){}
2.算法
    例子1:
        //在写for循环时运用算法对性能进行提升
        //1+2+3+4.....+100
        for(var i=0;i<=100;i++){
            sum+=i
        }
        //优化,使用公式n(n+1)/2 100(100+1)/2
        function getSum(startNum,endNum){
            return (startNum+endNum)*endNum/2
        }
    例子2var arr = [1,2,3,4,5,6] 找出和是11的两个数的索引
        普通做法:
            for(var i=0,len=arr.length;i<len-1;i++){
                for(var j=0,j<len-1;j++){
                    if(arr[i]+arr[j]==11){
                        return {i,j}
                    }
                }
            }
        优化做法:
            for(var i=0,len=arr.length;i<len;i++){
                var start = 11-arr[i];
                var end = arr.indexOf(start);
                if(end!=-1){
                    return {
                        start,end
                    }
                }
            }