HTML培训No.6

本文详细介绍了JavaScript中的数组操作,包括隐式创建、直接实例化、属性设置及获取、长度调整等。同时,讲解了函数的定义、参数、调用方式以及作用域。还提到了数组的一些常用方法如push、pop、reverse等,并讨论了函数声明提升、函数表达式和Function构造函数的定义方式。最后,探讨了函数参数的传递方式和函数作用域的概念。
摘要由CSDN通过智能技术生成

数组

数组定义3.8.1

var arr = [1,值2,值3];//隐式创建
var arr2 = [1,2,'a',true];
var arr3 = new Array(1,2,3);//直接实例化

var arr4 = new Array(5);
console.log(arr2[1]);//2
//如果下标不存在
console.log(arr2[10]);//undefined
//设置指定下标的值
arr2[1] = 20;
console.log(arr2);
//如果下标不存在
arr[10] = 100;
console.log(arr2);
//获取数组的长度
console.log(arr.length);//3
//设置数组的长度
arr3.length = 5;
console.log(arr3);
//设置数组的属性
arr3.name = "zhangsan";
/*key是name,value是zhangsan*/
console.log(arr3);
arr3["pwd"] = "123456";
/*key是pwd,value是123456*/
console.log(arr3);
//获取数组的属性
console.log(arr3["name"]); 
console.log(arr3.name);//二者相同

for循环

数组在使用的时候建议大家规矩来用,在存放数据的时候,从下标0开始顺序的存放数组元素。
如果下标:
	1.下标:非负整数(包括整数字符串):自从0开始,不存在添加,从下标0开始顺序的存放数组元素
	2.为负数、小数、非数字符串;这些内容不计算在长度内,当成"属性"处理,相当于自定义属性。
数组非常灵活,使用数组元素
	1.下标:非负整数(包括整数字符串):
		数组.下标
		数组[下标]
	2.下标:负数、小数、非数字字符串
		数组[属性]
for ---> 不遍历属性
foreach ---> 不遍历属性和索引中的undefined
for in --->不遍历索引中的undefined
<script>
        //隐式定义
        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);
        //如果下标不存在
        //arr[10] = 100;
        console.log(arr2);
        //获取数组的长度
        console.log(arr3.length);//3
        //设置数组的长度
        arr3.length = 5;
        console.log(arr3);
        //设置数组的属性
        arr3.name = "zhangsan";
        /*key是name,value是zhangsan*/
        console.log(arr3);
        arr3["pwd"] = "123456";
        /*key是pwd,value是123456*/
        console.log(arr3);

        //获取数组的属性
        console.log(arr3["name"]); 
        console.log(arr3.name);//二者相同

        console.log("===============");
   
        //for循环遍历
        for(var i = 0;i < arr3.length;i++){
            console.log("下标:" + i + ",值:" + arr3[i]);
        }
        //for...in
        console.log("---for...in---");
        for(var index in arr3){
            console.log("下标:" + index +",值:" + arr3[i]);
        }
        //foreach 专门针对数组的
        console.log("---foreach---");
        arr3.forEach(function(element,index){
            //forEach形参为function,
            //因为forEach是针对数组的,所以只会取到有下标仅对正常下标的值
            console.log("下标:" + index + ".值:" + element);
        })

    </script>

3.8.4 数组提供的操作方法

Array 对象为我们提供了一些方法,可以很方便的操作数组

push 添加元素到最后
unshift 添加元素到最前
pop 删除最后一项
shift 删除第一项
reverse 数组翻转
join 数组转成字符串
indexOf 数组元素suoyin
slice 截取(切片)数组,原数组不发生变化
splice 剪取数组、原数组变化、可以实现前后删除的效果
concat 数组合并
split 字符串方法,字符串转换成数组?查一下

3.9 函数

函数也是对象

3.9.1 函数的定义

有三种函数定义的方法:函数声明语句、函数定义表达式、Function 构造函数
JS中没有范围的概念,没有像for里面的变量for外面不能用这样的规定,而唯独函数有范围的概念。

3.9.1.1 函数声明语句(最常用)
function 函数名([参数列表]){
}
例如:
function foo(){
	console.log(1);
}

该方法定义的函数具有声明提升的效果

foo;
function foo(){
	console.log(1);
}
//变量声明提升
console.log( a );
var a = 2;
3.9.1.2 函数定义表达式

var 变量名/函数名 = function([参数列表]){
}
这种写法讲一个匿名函数赋值给变量。这时,这个匿名函数又称函数表达式,因为赋值语句的等号右侧只能放表达式。

3.9.1.3 Function构造函数

var 函数名 = new Function([参数列表],函数体);

var fn03 = new Function(a,b,'return a+b;');
//相当于
function fn04(a,b){
	return a + b;
}
  • JS中的函数没有重载,同名的函数,会被后面的函数覆盖
  • JS中允许有不定数目的参数

3.9.2 函数的参数

函数运行的时候,有时需要提供外部数据,不同的外部数据会得到不同的结果,这种外部数据就叫参数,定义时的参数称为形参,调用时的参数称为实参。

  • 实参可以忽略,那么对应形参为undefined
  • 若函数形参同名(一般不会这么干),在使用时以最后一个为准。
  • 可以给参数默认值:当参数为特殊值时,可以赋予默认值
  • 参数为值传递,传递副本;引用传递时传递地址,操作的是同一个对象
//调用函数时,实参可以省略,则对应形参为undefined
function add(a,b){
	console.log(a + "+" + b + "=" + (a + b));
}
add(3,4,5)//3+4=7
add(1);//1 + undefined = NaN
add();//undefined + undefined = NaN

//若函数形参同名(一般不会这么干),在使用时以最后一个值为准
function add2(a, a){
	console.log(a);
}
add(1,2);

3.9.3 函数的调用

  1. 常用调用方式
    函数名([实参]);
    存在返回值可以变量接收,若接收无返回值函数则为undefined。
  2. 函数调用模式
    function add(a,b){
    return a+b;
    }
    var num = add(1,2)
    console.log(sum);
  3. 方法调用模式
    var o ={
    m:function(){
    console.log(1);
    }
    };
    o.m();

3.9.4 return

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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值