JavaScript函数

知识点:function、函数的参数、函数的返回值、作用域

什么是函数:函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
函数的作用:函数常常被用于封装一些方法,避免重复去写重复的代码,减少代码量
JavaScript函数只有在调用时才会去执行

JavaScript语法:

JavaScript函数通过function关键词进行定义,其后是函数名和括号()
function fun(){//fun函数名 
	//执行的代码

}

JavaScript函数的创建方式:

封装到函数中的代码不会即可执行
函数中的代码会在函数调用的时候执行
调用函数:语法 函数对象();
当调用函数时,函数中封装的代码会按照顺序执行

1. 使用构造函数创建一个函数对象

var fun= new function(){//不建议使用构造函数创建函数
		alert("这是通过构造函数创建的函数");
}
fun();//调用函数
console.log(typeof fun);// typeof检查数据类型  function

2. 使用函数声明创建一个函数
语法:function 函数名([形参1,形参2,…,形参N]){
//语句
}
说明:[形参1,形参2,…,形参N]这里的[]表示可以使用参数也可以不使用参数
函数的调用:函数名([实参1,实参2,…]);

function fun2(){
	alert("这是通过函数声明创建的函数");
}

3. 使用函数表达式创建一个函数/匿名函数

var fun3=function(){
		alert("这是使用函数表达式创建的函数");
}

函数的参数:

在调用函数时,您可以向其传递值,这些值被称为参数。

这些参数可以在函数中使用。
您可以发送任意多的参数,由逗号 (,) 分隔:
myFunction(argument1,argument2)
当您声明函数时,请把参数作为变量来声明:

function myFunction(var1,var2){
//代码 
}

变量和参数必须以一致的顺序出现。第一个变量就是第一个被传递的参数的给定的值,以此类推。

function sum(a,b){
	var add=a+b;// 
	console.log(add);
}
sum(123,456);//579
sum(false,"123");//false123 false+"123" =>false123 
调用函数时解析器不会检查实参的类型,所以要注意,是否有可能会接收到非法的参数,如果有    可能则需要对参数进行类型的检查
调用函数时,解析器也不会对检查实参的数量
多余的参数将不会被赋值
如果实参少于形参的数据,则没有对应实参的形参将是undefined
function result(a,b,c){
		console.log("a="+a);
		console.log("b="+b);
		console.log("c="+c);
		var sum=a+b+c;
		console.log("sum="+sum);	
	}
	result(123,234);//实参少于形参 sum=NaN
	result(123,234,345,6767,78,9);//实参多余形参  sum=702

函数的返回值:

当 JavaScript 到达 return 语句,函数将停止执行。

如果函数被某条语句调用,JavaScript 将在调用语句之后“返回”执行代码。
函数通常会计算出返回值。这个返回值会返回给调用者:
实例
计算两个数的乘积,并返回结果:

var x = myFunction(7, 8);// 调用函数,返回值被赋值给 x
function myFunction(a, b) {
    return a * b;// 函数返回 a 和 b 的乘积
}
//x 的结果将是:56

在函数return后的语句都不会执行
如果return语句后不跟任何值,就相当于返回一个undefined

function sum(a,b){
var c=a+b;
return c;
alert("234234");//return后的语句不会执行
}
var total = sum(12,45);//定义一个变量接收函数的返回值
console.log("返回结果=="+total);//返回结果==57

立即执行函数:

函数定义完,立即被调用,这种函数叫做立即执行函数
立即执行函数往往只会执行一次

(function(){
alert("这是一个立即执行函数");
})();

(function(a,b){
alert(a+b);
})(23,23);//实参,运行结果为:46

作用域:局部变量、全局变量

在函数作用域中可以访问全局变量,但在全局作用域中无法访问到局部变量
- 当在函数作用域操作一个变量时,它会先在自身作用域中寻找,如果有就直接使用,如果没有就向上一作用域中寻找,直到找到全局作用域,如果全局作用域中仍然没有找到,则会报错ReferenceError
- 在函数中想要访问全局变量可以使用window对象

局部变量:在JavaScript函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。

可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。
只要函数运行完毕,本地变量就会被删除。
全局变量:在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。

var num=30;//全局变量
function Fun(){
	var num=20;//局部变量
console.log(num);//20 
//操作时先在函数中寻找(如果有直接使用),如果没有才会往上一级寻找
} 
Fun();
console.log(num);//30
var num2=30;//全局变量
function Fun2(){
	//var num2=20;//局部变量
console.log(num2);//30 
//操作时先在函数中寻找(如果有直接使用),如果没有才会往上一级寻找
} 
Fun2();
console.log(num);//30
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值