3.6 运算符
算数运算符、递增和递减运算符、比较运算符、逻辑运算符、赋值运算符
3.7 控制语句
3.8 数组
3.8.1.数组定义
JS中定义数组的三种方式如下(也可先声明再赋值)∶
var arr =[值1,值2,值3];//隐式创建
var arr = new Array(值1,值2,值3);//直接实例化
var arr = new Array (size); //创建数组并指定长度
3.8.2.基本操作
数组的长度可以通过length 属性来获取,并可以任意更改
数组名.length
数组名.length =新长度
数组中的每一个元素都可以被访问和修改,甚至是不存在的元素,无所谓越界
数组名[下标]
数组名[下标]=新值
3.8.3 数组的遍历
数组的遍历即依次访问数组的每一个元素,JS提供三种遍历数组的方式:
1. for循环遍历
for(var i=0; i<=数组.length-1 ; i++){
}
如:
for ( var idx=0 ; idx<arr. length ; idx++){
console . log(arr [idx ] );
}
2. for … in
for(var 下标(名称任意) in 数组名){
数组名[下标]是获取元素
}//下标(名称任意)
如:
for( var idx in arr){
console.log( arr [ idx] );
}
3.forEach
数组名.forEach(function(element , index){
// element(名称任意):元素,index(名称任意):下标
} )
如:
arr.forEach( function( elem, idx){
console.log(idx + "-->" + elem) ;
} )
4.了解
数组在使用的时候建议大家规矩来用。在存放数据时,从下标0开始顺序的存放数组元素。如果下标:
1.为非负整数(包括整数字符串):自动从0开始,不存在添加undefined
2.为负数、小数、非数字符串:这些内容不计算在长度内,当成"属性"处理,相当于自定义属性。
数组非常灵活,使用数组元素
1.下标:非负整数(包括整数字符串)∶
数组.下标
数组[下标]
2.下标:负数、小数、非数字字符串:
数组[属性]
- for --不遍历属性
- foreach -->不遍历属性和索引中的undefined
- for in -->不遍历索引中的undefined
3.8.4 数组提供的操作方法
Array对象为我们提供了一些方法,可以很方便地操作数组
函数名 | 作用 |
---|---|
push | 添加元素到最后 |
unshift | 添加元素到最前 |
pop | 删除最后一项 |
shift | 删除第一项 |
reverse | 数组翻转 |
join | 数组转成字符串 |
index0f | 数组元素索引 |
slice | 截取(切片)数组,原数组不发生变化 |
splice | 剪接数组,原数组变化,可以实现前后删除效果 |
concat | 数组合并 |
3.9 函数
3.9.1 函数的定义
有三种函数定义的方式:函数声明语句、函数定义表达式、Function构造函数
3.9.1.1.函数声明语句
function函数名([参数列表]){
}
例如:
function foo( ){
console. log(1 );
}
foo( );
该种方式定义的函数具有声明提升的效果
foo();
function foo( ){
console .log ( 1);
}
//变量声明提升
console. log( a );
var a = 2;
3.9.1.2 函数定义表达式
以表达式方式定义的函数,函数的名称是可以不需要的
var 变量名= function ([参数列表]){
}
变量名();
例如:
var fun = function( ){console.log ( "Hello" );
fun( );
这种写法将一个匿名函数赋值给变量。这时,这个匿名函数又称函数表达式,因为赋值语句的等号右侧只能放表达式。
3.9.1.3 Function构造函数
Function构造函数接收任意数量的参数,但最后一个参数始终都被看成是函数体,而前面的参数则列举出了新函数的参数。
var add = new Function( 'x', 'y' , 'return (x + y)');
//等同于
function add(x,y) {
return (x + y);
}
add( );
注意:
· JS 中的函数没有重载,同名的函数,会被后面的函数覆盖。
· JS 中允许有不定数目的参数。
3.9.2 函数的参数
函数运行的时候,有时需要提供外部数据,不同的外部数据会得到不同的结果,这种外部数据就叫参数
定义时的参数称为形参,调用时的参数称为实参
··实参可以省略,那么对应形参为undefined。
··若函数形参同名(一般不会这么干),在使用时以最后一个值为准。
··可以给参数默认值:当参数为特殊值时,可以赋予默认值。
··参数为值传递,传递副本;引用传递时传递地址,操作的是同一个对象。
3.9.3 函数的调用
1.常用调用方式
函数名([实参]);
存在返回值可以变量接收,若接收无返回值函数则为undefined。
2.函数调用模式
function add ( a, b){
return a+b;
}
var sum = add( 1,2)
console . log ( sum);
3.方法调用模式
var o = {
m : function( ){
console . log ( 1);
}
};
o.m( );
3.9.4 return
函数的执行可能会有返回值,需要使用return语句将结果返回。return语句不是必需的,如果没有的话
该函数就不返回任何值,或者说返回undefined。
作用:
1.在没有返回值的方法中,用来结束方法。
2.有返回值的方法中,一个是用来结束方法,一个是将值带给调用者。
3.9.5 函数的作用域
函数作用域:全局(global variable)和局部(local variable)
1.全局变量与局部变量同名问题
var box =1; //全局变量
function display( box){
var box = 3; //此处box与全局变量box没有关系,这里的box为传递的参数,相当于新声明的局部变量
var b = 2; //局部变量
console.log( " box-->" + box) ;
}
display();
// b不能访问
console. log( " b-->" + b);
2.在函数中定义变量时,若没有加var关键字,使用之后自动变为全局变量
function fun( ){
a = 100 ;
}
fun( );
alert(a);