JS第二次

函数

简介

函数也是一个对象。
函数中可以封装一些功能(代码),在需要时可以执行这些功能(代码)。
函数中可以保存一些代码在需要的时候调用。
使用typeof检查一个函数时会返回function

那么我们如何创建一个函数对象呢?

var fun = new Function();

我们可以将要封装的代码以字符串形式传递给构造函数。
封装到函数的代码不会立即执行
函数中的代码会在函数调用时执行
调用函数语法:函数对象()

fun();

如上就是调用了之前创建的fun函数。
当我们调用函数时,函数中的代码会按照顺序执行

我们同样可以使用函数声明来创建一个函数
语法:

function 函数名([形参1,形参2……形参N]){语句……}
function fun2(){语句1;语句2}

下面我们可以使用函数表达式来创建一个函数

var 函数名 = function([形参1,形参2……形参N]){语句……}

函数的参数

我们定义一个用来求两个数和的函数
可以在函数()中来指定一个或多个形参
多个形参之间使用,隔开,声明形参就是相当于在函数内部声明对应变量,并不赋值

function sum(a,b){console.log(a+b);}

在调用函数时可以在()中指定实参(实际参数)
实参将会赋值给函数中形参
sum(1,2);
调用函数时解析器不会检查实参类型,所以要注意,是否可能会接受到非法的参数,如果可能有则需要对参数进行类型的检查。
函数的实参可以是任意数据类型。

调用函数时解析器也不会检查实参的数量,多余的实参不会被赋值。
如果实参的数量少于形参的数量,则没有对应实参的形参将是undefined

函数返回值

创建一个函数来计算三个数和,我们只需要其返回值怎么办呢?
可以使用return来设置函数的返回值
语法:
return 值
return后面的值会作为函数的执行结果返回
如果return语句后不跟任何值就相当于返回一个undefined,如果函数中不写return则也会返回undefined

实参可以是任何值

实参可以是任意的数据类型,也可以是一个对象,当我们参数过多时可以将参数封装到一个对象中

var obj = {
name : "csdn",
age : 23,
address : "CN",
gender :"N",
};
sayHello(obj);

这样就将参数传递进去了

返回值类型

break可以退出当前循环
continue用于跳过当次循环
return可以结束整个函数
返回值可以是任意数据类型也可以是一个对象

立即执行函数

函数定义完立即执行

(function(){
	alert("我是一个匿名函数");
})();

在这里我们的匿名函数执行了
xg

ADD

函数也可以称为对象的属性
如果一个函数作为一个对象属性保存
那么我们称这个函数是这个对象的方法
调用函数就是调用对象的方法

如何枚举对象中属性呢
使用for……in语句
语法:

for(var 变量 in 对象){

}

for……in语句 对象中有几个属性循环体就会执行几次,每次执行时会将对象中的一个属性名赋值给变量

作用域

作用域指的是一个变量的作用范围
JS中有两种作用域
1.全局作用域
-直接编写在script标签的JS代码,都在全局作用域
-全局作用域在页面打开时创建,在页面关闭时销毁
-在全局作用域中有一个全局对象window,它代表一个浏览器的窗口,由浏览器创建我们可以直接使用
-在全局作用域中,创建的变量都会作为window对象的属性保存
2.函数作用域
-调用函数时创建函数作用域,函数执行完毕后销毁
-每调用一次函数就会创建一个新的函数作用域,他们之间时互相独立的
-在函数作用域中可以访问到全局变量
-当在函数作用域操作一个变量时,他会先在自生作用域中寻找,如果有则直接使用,如果没有则向上一级作用域中寻找,直到找到全局作用域,如果全局作用域中依然没有找到,则会报错ReferenceError

在函数作用域中有声明提前特性,使用var关键字声明的变量,会在函数中所有的代码执行前被声明

this

解析器在调用函数每次都会向函数内部传递进一个隐含的参数,这个参数就是this,this指向的是一个对象,这个对象我们称之为函数执行的上下文对象。
根据函数的调用方式不同,this会指向不同的对象
1.以函数形式调用时,this永远都是window
2.以方法的形式调用时,this就是调用方法的那个对象

遍历

所谓的遍历数组就是将数组中所有元素都提取出来
如果使用arr[1]这种遍历就太麻烦了
下面我们使用for进行遍历

for(var i=0 ; i<arr.length ; i++){
	console.log(arr[i]);
}

我们同样可以使用

var per = new Person("csdn",18);
var per2 = new Person("ABC",19)
var perArr = [per,per2]

console.log(perArr);
遍历数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值