此文章的目的是让本人更加认真的回顾一下基础知识
三元运算符
var score = Math.round(Math.random() * 100);
var tip = (score>60) ? score+"及格" : score+"不及格";
?前面为条件,若成立,结果为:前面的.反之,结果为:后面的
break和continue
break 执行了该语句以后 整个循环就直接终止了 终止的时候变量是多少 就是多少 不会持续循环结束
continue 执行了该语句以后 当次循环没有执行的部分直接跳过 立马开始下一次循环 可以用if来实现同样的功能
isNaN 判断里面的内容是否为非数字
isNaN(“a”);true isNaN(1);false
js的组成:
ecmascript(语法)+BOM(浏览器对象模型)+DOM(文档对象模型)
undefined和报错
报错:直接使用一个没有声明的变量
undefined:
声明了没有赋值
形参没有接收到实参
函数没有返回值
对象没有某个属性
数组,引用对象(对象):
声明:var scoreList = [100, 10, 80, 100, 99, 20];
值类型:string number boolean
数组的长度用length来获取 是一个数字
里面的内容取值 要通过下标(索引)
取第一个元素 scoreList[0]; 取值 不影响原数组
数组的修改 通过下标 找到位置 重新赋值,如scoreList[0]=91
var scoreList = [100, 10, 80, 100, 99, 20];
for (var i = 0, sum = 0; i < scoreList.length; i++) {
sum += scoreList[i];
}
document.write("数组的和为:" + sum);
//求和
var avg = sum / scoreList.length;
//求平均值
document.write("数组的平均数为:" + avg);
//求比平均值大的数
for(var i=0;i<scoreList.length;i++){
var score = scoreList[i];
if(score>avg){
document.write("比平均数还大的数为:"+score+"<br/>");
}
}
//10到20放到数组中
var scoreList = [];//集合的声明 空的数组 长度为0
for (var i = 10; i <= 20; i++) {
scoreList[scoreList.length] = i;
}
alert(scoreList);
数组的取值:
var list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
//随机的取一个值 取值要使用下标 随机的下标 随机有范围0到list.length-1
var randIndex = Math.round(Math.random()*(list.length-1));
//下标出来了 值也就出来了
var randNum = list[randIndex];
alert(randNum);
数组的扩展方法:
var list = [1, 2, 3, 4, 5];
list.push(6); //向数组末尾添加一个数
alert(list);
list.unshift(0); //向数组开头添加一个数
alert(list);
list.splice(1,0,'a','b'); //第一个值表示在数组的第几个位置上做操作,第二个是删除元素的个数,若想添加元素,则使其值为0,然后后头加上想要添加的数组的值
alert(list);
var list = [1, 2, 3, 4, 5];
list.pop(); //向数组末尾删除一个数
alert(list);
list.shift(); //向数组开头删除一个数
alert(list);
list.splice(1,2) //第一个值表示在数组的第几个位置上做操作,第二个是删除元素的个数,若想添加元素,则使其值为0,然后后头加上想要添加的数组的值
alert(list);
var list = [1, 2, 3, 4, 5];
var index = list.indexOf(3); //判断要查询的数是否存在,若存在,显示该数的下标,如果不存在,显示-1
alert(index);
var index1=list.indexOf(10);
alert(index1);
var flag1=list.includes(3); //判断要查询的数是否存在,若存在,为true,不存在显示false
alert(flag1);
var flag2=list.includes("10");
alert(flag2);
var list = [1, 2, 3, 4, 5,3];
var str=list.join("-") 使数组中的元素用join()内的连接符连接起来
alert(str);
list.reverse(); 使数组中的元素按照原本的倒序排列
alert(list);
var list = [1, 2, 3, 4, 5,3];
var arr = [6,7,8];
var nrw=list.concat(arr); //两个数组进行拼接
alert(nrw);
数组声明的两种方式
方法一:var list=[1,2,3,4];
方法二:
var arr=new Array(1,2,3,4);
var flag=(list==arr);
document.write(flag);
结果为 false,对象没有比较的必要 没有哪两个对象是相等的 因为分的地址不一样
var flag1=(list[0]==list[0]);
document.write("<br>"+flag1); //true,因为==是判断数值的大小是否相等
var flag2=(list[0]===list[0]);
document.write("<br>"+flag2); //true,因为===是判断数值的大小和数据类型是否相等,数据类型都为number数据类型,所以相等
在var arr=new Array()中容易遇到的问题
var list=[4];
var arr=new Array(4); //当只有一个数字时, 表示长度
document.write(list.length+’ '+arr.length); // 1 4
数据类型的检测
instanceof 或Array.isArray()
var btn=document.getElementById("btn");
var list=[4];
var flag1=btn instanceof Array;
var flag2=list instanceof Array;
var flag3=Array.isArray(btn);
var flag4=Array.isArray(list);
document.write(flag1+"<br>"); //false
document.write(flag2+"<br>"); //true
document.write(flag3+"<br>"); //false
document.write(flag4) //true
数组的分配问题
var list=[1,2,3,4];
var arr=list;
arr.push(5);
document.write(list+"<br>") //1,2,3,4,5
document.write(arr+"<br>") //1,2,3,4,5
给arr的数组添加值,而使list数组的值也改变的原因是 var arr=list;使list和arr指向同一个地址,当arr的改变使地址中的值发生改变时,相应的指向该地址的list的值也相应改变