计算符. 逻辑分支.循环.数组
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;
}
}
-
break 能在switch中使用, 能在for中使用
默认是结束就近层循环,也可以结束指定层循环;
-
continue 的作用,
结束当次循环,并不是结束整个循环, continue后面的语句不再执行, 只能在循环里面
arguments 伪数组
"只有"在函数内部才有的特殊的变量,叫做arguments
又叫做 伪数组 它的指针_ _proto__是Obuject
是动态获取实参
数组
下标 (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]);
}
数组的方法
-
push() 在数组的最后位置添加一个元素, 可以使任意数据
返回值 是返回新数组长度
-
pop() 删除数组里最后一位元素, 返回被删除的元素, 没参数
-
shift() 删除数组里的第一位元素, 返回被删除的元素, 没参数
-
-
unshift() 往数组的第一个位置添加一个元素, 并返回数组的新长度
(排序方法)
-
sort() 排序 , 从小到大排序 (升序)
但是他的排序, 只能进行简单的排序,超多十就按照个位排序, 因为他是根据ASCII码表比较的
解决方法 使用回调函数 , 又叫做高阶函数
-
reverse 反序 返回被排序之后的数组
-
concat 合并数组, 返回一个新的数组不会改变原数组, 可以放任何变量
-
slice 提取 从下标开始, 结束位置要多数一位, 但不包含结束位置的元素, 不会改变原来的数组
-
splice 3种用法
1.) 两个参数表示删除
2.) 第二个参数是0的时候便是插入
3.) 第二个参数是1或1以上的时候表示替换
-
join 把数据变成指定格式化字符串