0.JavaScript是一门面向过程的脚本式编程语言
面向过程
三大特征:顺序、选择、循环
面向对象
三大特征:封装、继承、多态
1.JavaScript 数组Array
描述:JavaScript数组是一种特殊的对象结构
是使用[]中括号定义的,中括号内部的数组结构使用逗号间隔的数据结构。
语法:var arr = [value1, value2, ...];
说明:
1)数组当中用逗号间隔开的结构称之为【数组元素】,数组元素可以是任意数据类型
名词:
下标:数组中数组元素的序号,默认从0开始,由系统自动添加。
例子:
var arr1 = [100, "hello", false, undefined, null, {username:"frank"}];
console.log(arr1);
操作:
读取
数组名[数组下标]
写入(修改)
数组名[数组下标] = xxx;
例子:
var numArr = [100, 200, 300];
console.log(numArr);
console.log(numArr[1]);
numArr[100] = 9999;
console.log(numArr);
console.log(numArr[35]);
API:
1)indexOf
描述:在数组中查找指定元素第一次出现的下标,并返回
语法:array.indexOf(item)
说明:该方法不会修改原数组
例子:
var arr = [100, 200, 900, 400, 500, 300];
var result = arr.indexOf("hello");
console.log(result);
console.log(arr);
2)push
描述:向数组的末尾添加一个或多个元素,并返回新数组的长度
语法:array.push(item1, item2, ...);
说明:该方法会改变原数组
例子:
var arr = [100, 200, 300];
console.log(arr);
var result = arr.push(400, 500, 600, '700');
console.log(arr);
console.log(result);
3)concat
描述:concat() 方法用于连接两个或多个数组
语法:array1.concat(array2,array3,...,arrayX);
说明:该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本
例子:
var hege = ["Cecilie", "Lone"];
console.log(hege);
var stale = ["Emil", "Tobias", "Linus"];
var kai = ["Robin"];
var children = hege.concat(stale,kai);
console.log(hege);
console.log(children);
4) join
描述:把数组中的所有元素转换为一个字符串
语法:array.join(separator)
说明:元素是通过指定的分隔符进行分隔的(separator可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。)
例子:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var energy = fruits.join();
5)lastIndexOf
描述:搜索数组中的元素,并返回它最后出现的位置
语法:array.lastIndexOf(item)
说明:该方法不会修改原数组
例子:
var arr = [100, 200, 900, 400, 500, 300, 200, 600];
console.log(arr);
var result = arr.lastIndexOf(200);
console.log(result);
console.log(arr);
6)pop
描述:删除数组的最后一个元素并返回删除的元素
语法:array.pop()
说明:此方法改变数组的长度!
例子:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.pop();
7)shift
描述:用于把数组的第一个元素从其中删除,并返回第一个元素的值
语法:array.shift()
说明:此方法改变数组的长度!
例子:
var arr = [100, 200, 900, 400, 500, 300, 200, 600];
console.log(arr);
var result = arr.shift();
console.log(result);
console.log(arr);
8)slice
描述:可从已有的数组中返回选定的元素
语法:array.slice(start, end)(start end 可选)
说明:不会改变原始数组
例子:
var arr = [100, 200, 900, 400, 500, 300, 200, 600];
console.log(arr);
var result = arr.slice(2);
console.log(arr);
console.log(result);
9)splice
描述:用于添加或删除数组中的元素
语法:array.splice(index,howmany,item1,.....,itemX)
index:必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素的下标,必须是数字。
howmany:可选。规定应该删除多少元素。必须是数字,但可以是 "0"。如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
item1, ..., itemX: 可选。要添加到数组的新元素
说明:会改变原始数组
例子:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2,0,"Lemon","Kiwi");
10)unshift
描述:向数组的开头添加一个或更多元素,并返回新的长度
语法:array.unshift(item1,item2, ..., itemX)
说明:将改变数组的数目
例子:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Lemon","Pineapple");
扩展:
二维数组:如果数组的元素是一维数组,那么这个数组就称为二维数组
eg:
var arr = [
[1,2,3],
[4,5,6],
[7,8,9]
];
console.log(arr[1][2]);
2.分支(选择、选择结构、选择语句、分支结构、分支语句)
描述:分支结构是指代码在执行的过程中不在遵守从上至下的执行顺序,
而是可以根据条件的逻辑值来决定如何执行
语法:if(具有逻辑值的表达式){
当逻辑表达式的结果为true的时候,要执行的代码
}
说明:
1)如果逻辑表达式的结果为false,则整个if结构相当于不存在。
并且不会影响其下面的代码正常执行。
2)如果逻辑表达式的结果为true,则正常执行代码
并且不会影响其下面的代码正常执行。
例子:
var now = new Date();
var hour = now.getHours();
if(hour>=6&&hour<11){
console.log("现在是上午");
}
if(hour>=11&&hour<13){
console.log("现在是中午");
}
if(hour>=13&&hour<18){
console.log("现在是下午");
}
演变:
1)if-else结构
描述:如果满足条件执行..,否则执行...
语法:
if(具有逻辑值的表达式){
当逻辑表达式的结果为true的时候,要执行的代码
}else{
当逻辑表达式的结果为false的时候,要执行的代码
}
作用:能够节约判断的次数,提升系统性能。
例子:
var now = new Date();
var hour = now.getHours();
if(hour>=6&&hour<11){
console.log("现在是上午");
}else{
if(hour>=11&&hour<13){
console.log("现在是中午");
}else{
if(hour>=13&&hour<18){
console.log("现在是下午");
}else{
if(hour>=18&&hour<24){
console.log("现在是夜晚");
}else{
console.log("现在是凌晨");
}
}
}
}
2)if else-if else结构
描述:如果...否则如果...否则如果... ... 否则...
语法:
if(具有逻辑值的表达式1){
当逻辑表达式的结果为1true的时候,要执行的代码
}else if(具有逻辑值的表达式2){
当逻辑表达式2的结果为true的时候,要执行的代码
}
...
else{
当前面所有的逻辑表达式的结果都为false的时候,要执行的代码
}
说明:
1)建议末尾的else写上,能够保证结构的完整性。
2)else语句不能像if一样单独存在,其总是会向上寻找距离最近的if构成if-else结构
例子:
var now = new Date();
var hour = now.getHours();
if(hour>=6&&hour<11){
console.log("现在是上午");
}else if(hour>=11&&hour<13){
console.log("现在是中午");
}else if(hour>=13&&hour<18){
console.log("现在是下午");
}else if(hour>=18&&hour<24){
console.log("现在是夜晚");
}else{
console.log("现在是凌晨");
}
3.循环for
描述:能够通过规则,来规避书写大量冗余代码的结构
语法:
for(表达式1; 表达式2; 表达式3){
需要重复执行的代码(循环体)
}
说明:
1)循环存在三要素
2)表达式1:循环变量赋初值,循环从哪里开始。
3)表达式2:循环终止条件(循环得以继续执行的条件)
4)表达式3:循环变量向着终止条件的变化趋势。
注意:
循环语法中的三个表达式理论上都可以不写
但如果不写,需要对应做出修改。
1)
表达式1可以不写,但如果不写,需要在循环外部为循环变量赋初值
eg:
var sum = 0;
var num = 1;
for(; num>100; num++){
sum += num;
}
console.log(sum);
2)
表达式2可以不写,但如果不写,需要在循环内部判断循环是否可以终止
eg:
var sum = 0;
for(var num=1; ; num++){
if(num>100){
break;
}
sum += num;
}
console.log(sum);
3)
表达式3可以不写,但如果不写,需要在循环内部让循环变量向着循环终止条件发生变化
eg:
var sum = 0;
var num = 1;
for(; num<=100; ){
sum += num;
num++;
}
console.log(sum);
例子:
求1~100的加和 高斯
var sum = 0;
for(var num=1; num<=100; num++){
if(num%2==1){
sum += num;
}
}
console.log(sum);