一.运算符的优先级
+ - / * && || () -= -- ++
二.js的舍入误差
console.log(0.1+0.2)
误差的原因:在浮点数转换成二进制的时候位数太多
二进制转换成十进制时精度的丢失,所以产生的误差
解决方案:
方案1:
console.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
}
例子2:
var 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
}
}
}