JS函数
Posted chen-sx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS函数相关的知识,希望对你有一定的参考价值。
JS函数
函数的封装
传统方式
function 函数名()
该方式的函数有“预加载”过程,允许我们先调用函数、再声明函数
预加载:代码先把函数的声明放入内存。代码看起来是先调用、后声明,本质是先声明、后调用的。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
getInfo();
function getInfo()
console.log("hello");
</script>
</head>
<body>
</body>
</html>
函数先调用、后声明的条件是,全部代码在一个”<script>”标记里边。
如下所示:将会报错
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
getInfo();
</script>
<script type="text/javascript">
function getInfo()
console.log("hello");
</script>
</head>
<body>
</body>
</html>
变量赋值方式声明函数(匿名函数使用)
var 函数名 = function()
该方式没有“预加载”,必须先声明、后调用。
<script type="text/javascript">
var getName=function ()
console.log("hello");
getName();
</script>
函数的参数
实参和形参的对应关系
在javascript里边:实参与形参没有严格的对应关系
<script type="text/javascript">
function f1(name,age,addr='beijing')
console.log("名字:"+name+" 年龄:"+age+" 地址:"+addr);
f1("csx",12);
f1("csx",13,"shanghai");
f1("csx");
f1();
</script>`
关键字arguments
利用arguments可以在函数里边接收实参信息。
<script type="text/javascript">
function f1()
var len=arguments.length;
if(len==0)
console.log("个人信息:");
else if(len==1)
console.log("个人信息:"+" 名字:"+arguments[0]);
else if(len==2)
console.log("个人信息:"+" 名字:"+arguments[0]+" 年龄:"+arguments[1]);
else if(len==3)
console.log("个人信息:"+" 名字:"+arguments[0]+" 年龄:"+arguments[1]+" 地址:"+arguments[2]);
f1();
f1("csx");
f1("csx",12);
f1("csx",13,"shanghai");
</script>
callee关键字
在函数内部使用:代表当前函数的引用
耦合:一处代码的修改会导致其他代码也要发生改变。 在程序项目里边要开发低耦合度的代码。
<script type="text/javascript">
//callee可以降低代码的耦合度
function jiecheng(n)
if(n==1)
return 1;
else
return n*arguments.callee(n-1);
console.log(jiecheng(5));
console.log(jiecheng(6));
var jc=jiecheng; //把jiecheng函数的引用传递给变量jc一份,使得jc也可以当函数使用
jiecheng=null;//把jiecheng函数给销毁,避免后面代码使用
console.log(jc(7));
</script>
函数返回值
函数返回,使用return关键字返回信息
return可以返回全部的数据类型,return本身还可以结束函数的执行
return还可以返回一个对象,因为函数是对象,所有也可以返回函数
<script type="text/javascript">
function f1()
var name="csx";
var age=12;
var addr="beijing";
//内部嵌套函数
function f2()
console.log("I am f2");
return f2;//把函数返回
var ff=f1();//f1执行完毕后的返回值被ff接受
//一个对象(f1()的返回值)对另一个变量赋值,是引用传递
ff();
</script>
f2和ff是两个不同的引用,但是都指向同一个函数体
函数调用
传统方式调用
函数名()
匿名函数自调用
(function())()
<script type="text/javascript">
var f1=function ()
console.log("f1f1f1");
var f1="tom";//同名的f1把上面的函数给覆盖/污染了
f1();
//匿名函数自调用,好处:本身不会被同名变量污染
(function ()
console.log("hello");
)();
(function ()
console.log("地址是:"+addr)
)("北京");
</script>
匿名函数自调用,好处:本身不会被同名变量污染
全局/局部变量
- 全局变量
① 在函数外部声明的变量
② 函数内部不使用“var”声明的变量(函数调用之后起作用)
<script type="text/javascript">
//全局变量:函数外部声明
var name="csx";
function f1()
console.log("name:"+name);
name="ccc";
f1();
console.log("name:"+name);
function f2()
//全局变量:函数内部不使用"var"声明(函数调用后起作用)
age=12;
console.log("age:"+age);
f2();
age=18;
console.log("age:"+age);
</script>
- 局部变量
在函数内部声明的变量,变量前边有”var“关键字。
以上是关于JS函数的主要内容,如果未能解决你的问题,请参考以下文章