一.数组
数组的定义
1.隐式定义
var数组名=[];1/空数组var数组名=[值1,值2,值3...];
2.直接实例化
var数组名= new Array(值1,值2,值3... );
3.定义数组并设置长度
var数组名= new Array ( size);
数组的操作
数组的下标从0开始(不会出现下标越界)
获取数组指定下标的值: (如果下标不存在,则undefined)
数组名[下标];
设置数组指定下标的值: (如果下标不存在,则自动扩容)
数组名[下标]=值;
获取数组的长度
数组名.length;
设置数组的长度:
数组名.length = 值
了解
如果设置非整数型的下标,则会成为数组的属性,不计入数组的长度
设置属性:
数组名.属性名=值;
数组名["属性名"]=值;
获取属性:
数组名.属性名;
数组名["属性名"】;
数组的遍历
1. for循环遍历
for (var index = 0; index<数组长度; index++ ){
}
相当于Java中:
for(int index = e; index<数组长度; index++){
2. for . . .in循环
for(var下标名 in 数组){
}
3. forEach循环
数组.forEach(function(element , index){
// element:元素
// - index:下标
});
注:
for --》 不遍历属性
foreach --》不遍历属性和索引中的undefined
for- in --》·不遍历索引中的undefined
数组提供的方法:
push 添加元素到最后
index0f 数组元素索引
join 数组转成字符串
split 字符串方法:将字符串转换成数组
unshift 添加元素到最前
pop 删除最后一项
shift 删除第一项
reverse 数组翻转
slice 截取(切片)数组,原数组不发生变化
splice 剪接数组,原数组变化,可以实现前后删除效果
concat 数组合并
<script type="text/javascript"> /*数组的定义*/ //隐式定义 var arr1 =[]; console. log( arr1); var arr2= [1,2, "a" ,true]; console.log( arr2); //直接实例化 var arr3 = new Array ( 1,2,3); console.log( arr3); //定义数组并设置长度 var arr4 = new Array(5); console.log(arr4); console.log("=-=---=--===");/*数组的操作 */ //获取指定下标的值 console.log( arr2[1]);// 2 //如果下标不存在 console.log(arr2[10]); // undefined //设置指定下标的值 arr2[1]=20; console.log ( arr2); //如果下标不存在 arr2[10] = 100; console.log( arr2); //获取数组的长度 console.log( arr3. length); // 3 //设置数组的长度 arr3. length = 5; console.log(arr3); //设置数组的属性 arr3.name= "zhangsan" ; console.log(arr3); arr3 [ "pwd" ] ="123456"; console. log( arr3); //获取数组的属性 console. log(arr3[ "name" ]); console. log("---------- =="); /*数组的遍历*/ console. log(arr3); console. log("----for循环遍历----" ); // for循环遍历 for( var i = 0; i < arr3.length; i++) { console.log("索引:" + i +",值:"+ arr3[i]) } console. log("----for...in----" ); //for. . .in console.log("- --for . . .in----");for (var i in arr3) { console. log("下标:" +i + ",值:"+arr3[i]); } // forEach console.log("---forEach-- --" ); arr3.forEach(function(element,index){ console.log("下标:" + index +",值: "+ element); }) /*数组提供的方法*/ // push 添加元素到最后 // index0f 数组元素索引 // join 数组转成字符串 // split 字符串方法:将字符串转换成数组 console. log("---------- =="); var arr5 = ["a","b","c"]; // push 添加元索到最后 arr5[arr5.length] = "d"; arr5. push("e"); console. log(arr5); // indexOf 数组元素索引 console. log(arr5. indexOf("a")); // 0 console. log(arr5. indexOf("t")); // -1, 找不到返回-1 // join 数组转成字符串 console. log(arr5.join("-")); // a-b-c-d-e // split 字符串方法:将字符串转换成数组 var str = "1,2,3,4,5"; console. log(str .split(",")); </script>
二.函数
函数的定义
1.函数声明语句
function函数名([参数列表]) {
}
2.函数定义表达式
var变量名/函数名= function([参数列表]) {
}
3. Function构造函数 (了解)
var函数名= new Function([参数列表],函数体);
函数的参数
定义函数时设置形参,调用函数时传递实参。
1.实参可以省略,则形参为undefinded
2.如果形参名相同,则以最后一个参数为准
3.可以设置参数的默认值
4.参数为值传递,传递副本;参数是是引用传递,则传递的是地址,操作的是同一个对象
函数的调用
1.常用调用模式
函数名([参数列表]);
2.函数调用模式(函数有返回值)
var变量名=函数名([参数列表]);
3.方法调用模式
对象.函数名([参数列表]);
函数的返回值
return
1.在没有返回值的方法中,用来结束方法。(如果方法没有返回值, 使用return, 返回的是undefinded
2.有返回值的方法中,一个是用来结束方法,一个是将值带给调用者。
函数的作用域
在JS中,只有在函数中才作用域。
1.在函数中,存在局部变量和全局变量
2.在函数中,如果声明变量时未使用var修饰符,则该变量是全局变量
<script type="text/javascript"> /*函数的定义 */ // 1.函数声明语句 function fn01(a,b) { console.log(a+b); } console. log(fn01); // 2.函数定义表达式 var fn02 = function(a,b) { console.log(a+b); } console. log(fn02); // 3. Function构造函数 var fn03 = new Function('a','b','return (a+b);'); console. log(fn03); //相当于 function fn04(a,b) { return (a + b); } /* 函数的参数 */ // 1.实参可以省略,则形参为undefinded function test01(x,y){ console.log(x+y); } //调用函数 //未设置实参 test01(); // NaN test01(1); // NaN test01(1,2); // 3 // 2.如果形参名相同,则以最后一 个参数为准 function test02(x,x) { console.log(x); } test02(1,2); // 2 // 3.可以设置参数的默认值 function test03(x) { // 如果形参x有值,则值为x传递的值;否则值为"x" x= x || "x"; console.log(x); } test03(10); // 10 test03(); // X function test04(x) { (x != null && x != undefined) ?x=x:x="x" ; console.log(x); } test04(); // x test04("Hello"); // 4.参数为值传递,传递副本;参数是是引用传递,则传递的是地址,操作的是同一个对象 //值传递 var num=10;//变量 // //函数 function test05 (num) { num = 20; } //调用函数 test05(num); //实参是定义的变量 console.log(num); //引用传递 var obj = {name: "zhangsan"}; console.log(obj); function test06(o) { o.name = "lisi"; } test06(obj); console. log(obj); console.log("==============") /* 函数的调用 */ //常用调用模式 function f1() { console. log("常用调用模式..."); } f1(); //函数调用模式 var f2 = function(a) { console. log("函数调用模式..."); return a } var num1 = f2(1); console. log(num1); //方法调用模式 //定义对象 key键:字符串 value值: 任意数据类型 var obj={ name: "zhangsan", //字符串 age:18,//数值 sex:true, //布尔 cats:["大毛","二毛"],//数组 dog:{ //对象 name :"张二狗", age:1 }, sayHello:function(){ //函数 console. log("你好呀~"); }, } console. log(obj); console. log(obj. sayHello()); //对象调用函数 obj. sayHello()//对象调用函数 console. log("============"); /*函数的返回值*/ function a1(){ console.log("没有返回值..."); return; console.log('........'); } console.log(a1()); function a2 (){ console. log("有返回值..."); return "test"; } console.log(a2()); console.log("==============="); /*函数的作用域*/ var pp = "Hello"; //全局变量 //函数中定义的变量是局部变量 function qq() { //局部变量 var box = 10; // 全局变量 没有使用var修饰 box2 = 20; } // 调用方法,执行方法中的代码 qq(); console.log(pp); //全局变量 /* console.log(box); box是局部变量*/ console.log(box2); </script>