计算符. 逻辑分支.循环.数组

247 阅读2分钟

计算符. 逻辑分支.循环.数组

null和undefined区别

null 表示没有对象 ,没有值

1)作为函数的参数 ,表示该函数的参数不是对象

2)作为对象原型的终点

undefined 表示缺少值, 有值没定义

1)定义了形参 , 没有传实参 ,显示undefined

2)对象属性名不存在时 ,显示undefined

3)函数没有写返回值, 也就是没有写return ,得到的是undefined

4)写了return, 但没有赋值, 拿到的值undefined

null和undefined转换成number数据类型

null默认为 0

undefined默认成 NaN

总结

string bool 有内容就是true

numder bool 非0就是true (-1也是true)

obj bool 不是null的就是true,是null就是false

undefined bool 始终都是false

parseInt 取值 会丢失精度

parseFloat 保留小数

逻辑运算符

&& (与)

|| (短路运算算符)(或) (取真)

! (非)

关系运算符

<, >=, <=, ==, ===, !=, !==

== 和 ===的比较 :

1). == 比较值相等

例 : 5=="5" 纸币5元和硬币5元值相等

2). ===值和类型

纸币5元和硬币5元

自增,自减

++, - -

a++ : ++在后 ,先取值, 后运算

++a : +=在前 ,先运算, 后赋值

类型转换

1. 强制转换
parseInt ()        
parseFloat()        
Boolean ()  其他类型转换至boolean类型 , 强制转换        
Number()         
toString() 
或String()
2. 隐式转换, 自动转换
可以利用 -,   *,   / 进行自动转换​        
== 也会进行自动转换​         
1 == true 

逻辑分支

1. 单分支的语法
if (表达式) {  
    //逻辑代码  
};
2.多分支语法
if (  ) {      
} else if (  ) {    
} else {        
}; 
3. switch 分支 语法

switch 是比较严格 要 恒等于比较值 和内容相等才是true

switch (表达式) {            
    case 条件1:                
        // 逻辑代码                
    break;            
    case 条件2:                
        // 逻辑代码*                
    break;            
    case 条件3:                
        // 逻辑代码                
    break;            
    default:                
    break; 
}

循环

while循环语法

while (表达式) { 逻辑代码 };

打印100以内的奇数        
var num = 0;        
while (num < 100) {            
    num++;            
    if (num % 2 != 0) {                
        console.log(num);            
    }        
}

do...while..语法

do{ 先执行do .. 再判断 } while (表达式) ;

区别

do..while..先执行,后判断,不管条件是否满足

示例:计算1+2+3+……+100之和。        
var num = 0;        
var sum = 0;        
do {            
    sum=sum+num;            
    num++;        
}
while (num <= 100)        
console.log(sum);

for循环 语法 (固定循环)

for 有固定次数的情况下, 有限使用for

for (表达式1, 表达式2, 表达式3) { 业务逻辑 }

简洁的for死循环 for( ; ; ){ .. .. }
示例:计算1+2+3+……+100之和。        
var sum=0;        
for (var i =0; i <=100; i++) {            
    sum = sum +i;        
}        
console.log(sum);

break

判断一个数是不是合数。

(指自然数中除了能被1和本身整除外, 还能被其他的数整除(不包括0)的数。)

var num = prompt("请输入一个数");
var flag= true; *//假设输入的第一个数是合数*
for (var i = 2 ; i <num; i++) {
    if (num % i==0) {
       flag= false;
       break;
    }
}

break 的扩展

aaa: for (var i = 0; i < 5; i++) {
     console.log("i :" + i)
     bbb: for (var j = 0; j < 3; j++) {
     	console.log("j : " + j);
     	break aaa;
    }
}
  1. break 能在switch中使用, 能在for中使用

       默认是结束就近层循环,也可以结束指定层循环;

  1. continue 的作用,

    结束当次循环,并不是结束整个循环, continue后面的语句不再执行, 只能在循环里面

arguments 伪数组

"只有"在函数内部才有的特殊的变量,叫做arguments

arguments

又叫做 伪数组 它的指针_ _proto__是Obuject

arguments的作用 

是动态获取实参

数组

下标 (index)

1). 数组的下标是从0 开始的, 可以通过下标进行获取值, 通过下标去修改值

2). 超出下标设置值 , 数组里没有这个值 , 显示undefined

3). 超出下标设置值 , 会变成 (添加操作) 功能

数组的遍历

1). 遍历拿出每一个成员, 使用for循环

2). 使用for... in for..in遇到空字符就直接跳过

var arr = [11, 22, 33, 44, 55];
for (var i = 0; i < arr.length; i++) {
    console.log(arr[i]);
}

数组的方法

  1. push() 在数组的最后位置添加一个元素, 可以使任意数据

    返回值 是返回新数组长度

    1. pop() 删除数组里最后一位元素, 返回被删除的元素, 没参数

    2. shift() 删除数组里的第一位元素, 返回被删除的元素, 没参数

  2. unshift() 往数组的第一个位置添加一个元素, 并返回数组的新长度

    (排序方法)

  3. sort() 排序 , 从小到大排序 (升序)

但是他的排序, 只能进行简单的排序,超多十就按照个位排序, 因为他是根据ASCII码表比较的

解决方法 使用回调函数 , 又叫做高阶函数

  1. reverse 反序 返回被排序之后的数组

  2. concat 合并数组, 返回一个新的数组不会改变原数组, 可以放任何变量

  3. slice 提取 从下标开始, 结束位置要多数一位, 但不包含结束位置的元素, 不会改变原来的数组

  4. splice 3种用法

1.) 两个参数表示删除

2.) 第二个参数是0的时候便是插入

3.) 第二个参数是1或1以上的时候表示替换

  1. join 把数据变成指定格式化字符串