JS学习之函数
本文主要是对近期学习的JS的基础知识–函数的一个大概汇总。
1、函数分为系统函数(内置函数)和自定义函数
系统函数顾名思义是系统已经编写好的函数,我们只需要调用即可使用,如:alert()语句,prompt()语句,(小小的注意点:弹框类型的语句会阻断代码的运行).还有docment.write()语句。自定义函数则是用户进行声明编写在进行调用的函数。在JavaScript 函数语法 JavaScript 函数通过 function 关键词进行定义,其后是函数名和括号 ()。 函数名可包含字母、数字、下划线和美元符号(规则与变量名相同)。语法:function 函数名() { 代码块 } eg:function say() { console.log(“实验函数”); }2、函数参数
显示参数(parameters)和隐式参数(arguments)
显示参数即用户在定义函数的时候列出来的名称,可以理解为形参。用户在调用函数的时候传入实参,实参再传递给形参。对于缺省的参数,默认定义为undefined。
代码如下(示例):
function add(x,y){
console.log(x+y); }
add(2,3);
function add(x,y){
console.log(x+y); }
add(20);
y缺省,类型为undefined,由于x是数值型,y自动转换为数值型,undefined转换为数值型为NAN,NAN+一个数字结果为NAN。
隐式参数(arguments) : arguments对象和function分不开,只有在函数开始的时候才能使用,不能显示创建,JS同样不会对这种参数进行数据类型和数量上的检查,arguments对象访问单个参数的方式和数组很类似,但是arguments并非数组。
function test() {
var s=” “;
for(var i=0;i<arguments.length;i++){
alert(arguments[i]);
s+=arguments[i]+”,”;
}
return s;
}
test(“name”,”age”);
结果:name,age
3.return返回值
没有返回值返回undefined,return具有跳出函数的作用。
4、函数作用域
全局和局部(函数作用域),局部变量在使用完之后会被释放。局部可以访问全局
5、声明提前编译
js程序在编译的时候,会将所有var声明的变量和function声明的函数,可以看作将它们提前到相应的代码最开始的地方
代码如下(示例):
funtion test() {
console.log(S);
var S=20;
console.log(S);
}
test();
结果:undefined 20
以上代码相当于:
funtion test() {
var S;
console.log(S);
S=20;
console.log(S);
}
test();
注意:JS只是把声明提前了,并没有把赋值也提前,对function声明,会将函数名称和函数体都提前,而且先预声明变量再预定义函数。
5、作用域链
在该局部作用域内找不到该变量的声明则会向其上一层去查找,直到在全局作用域内找不到该变量的声明就会报错。