javascript 函数

函数


编程JS中函数的概念:
函数的当它被调用时执行的可重复使用的代码块。
函数定义:
函数就是把完成特定功能的一段代码抽象出来。使之成为程序中的一个独立实体。
起个名字(函数名)可以在同一程序或其他程序中多次重复使用,通过函数名调用。
【注】无参函数的声明:
【格式】
function函数名(){
函数体;
}
【注】函数体内,外面怎么写JS代码,这里也如何去写JS代码
【功能】函数可以封装任意多条语句,而且可以在任何地方任何时候调用执行。
【分类】

(1)内置函数(系统函数,官方函数)

  alert() parseInt() document.write()
(2)自定义函数()用户需求,自己封装一个函数
  【作用】 一是程序变得更加简短而清晰,
二有利于程序的维护,
三可以提高程序的开发效率,
四提高了代码的复用性(重用性)。
程序被CPU执行
【注】封装函数的时候,函数名=标识符,必须见名思议
当前函数的函数名必须体现函数的功能。
function print(){ //函数的声明,相当于说明书。
for(var i = 0;i < 10;i++){
document.write("hello world!"+"<br />");
}
}
print();//函数调用的时候,告诉CPU,照说明书执行

 

1、有参函数

 

 

【注】到底输出几个是不确定的?

我们可以把函数中不确定的值当做形参(形式上的参数)进行声明。
有参函数的封装过程:
function函数名(形参...){
函数体;
}
function print(n){ //函数的声明,n 形参
for(var i = 0;i < n;i++){
document.write("hello world!"+"<br />");
}
}
print(15);//函数调用,实参给形参进行赋值。15是实参,n是形参。
//封装一个函数,计算两个数的和。
function add(num1,num2){
alert(num1+num2);
}
add(5,10)

 

2、函数arguments

 

【注】计算所有传入参数的和具体存入多少参数不确定,使用arguments。
在每个函数内都有一个内置的数组,是一个变量,叫做arguments。
它可以存储当前函数传入的所有参数,而且是通过传参的顺序进行排列。
【注】arguments.length 输入传入形参的个数
【注】访问arguments里面的数据需要通过对应的房间或我下标进行访问。
【注】下标可以配合我们的循环去使用。

//封装一个函数,计算两个数的和。
function sum(){
alert(arguments[0]);//5
alert(arguments.length);//2
}
sum(5,10)
//封装一个函数,计算2个数的和。
function sum(){
var sum = 0;
for(var i=0;i<arguments.length;i++ ){
sum += arguments[i];
}
alert(sum);
}
sum(3,4,5,6);//18

 

 

3、函数返回值

 


【注】希望能够在函数外部获取到,函数调用的结果。
【注】如果我们要是外部获取到函数内运行的结果,
可以通过return语句跟后面的要返回的值来实现返回值。
【注】return后 面所跟表达式的值,就是当前函数调用的值。
【注】函数执行到return语句以后,就执行结束,跟在return后面其他的语
句,执行不到。

表达式
1、表达式值
2、表达式的功能
函数
分析函数
  1、函数值(return后面表达式的值)
  2、函数功能(函数名)

function sum(num1,num2){
//alert(num1+num2);
//alert(1);
//return num1+num2;
//alert(2);//这些代码执行不到
return "hello world";
}
var result = sum(5,15);
alert(result);

4、函数作用域


就是起作用的返回,或者取值有效范围,
每一个函数的声明都会形成一个作用域。
全局作用域:全局作用域声明的变量,全局变量。
局部作用域:函数,局部作用域声明的变量 局部变量。局部变量的
生命周期和生效范围都是声明该变量的函数区域。
当函数调用完成以后,就直接销毁。
如果全局作用域与局部作用域变量重名,我们采取就近原则。
当前访问这个变量离哪个作用域近,就是哪个作用域。

【注】若在函数内部声明的变量没有用var,则调用时默认为全局变量
var a =10;
function sum(){
var a=5;
alert(a);
}
alert(a);//10
sum(); //5,访问后就释放了
alert(a);//10
//函数练习
//判断一个年份是不是闰年
//分析:参数是年份,返回值是否是闰年
function leapYear(year){
if(year % 400==0 ||year % 4==0 && year % 100!=0){
return true;
}else{
return false;
}
}
alert(leapYear(2017));
//判断一个数是否为素数

 

5、即时函数

格式:(匿名函数)(给匿名函数传参)

 

(function (str){

  console.log(str)

})("hllo world!")

 

6、递归概念

 


函数可以自己调用自己,称为递归调用。
【注】我们可以写出递归,但是我们并不知道他是如何得出结果。
函数的递归调用:
方法:
(1)首先去找临界值,既无需计算,获得的值。
(2)找这次和上一 次的关系
(3)假设当前函数已经可以使用了,调用自身计算上一次的运行结果,再写
出这次的运行结果。
【注】递归会在短时间内,使内存剧增。
工作中一般禁止使用递归。
[特点]
(1)必须有参数
(2)必须有return
//1加到100的和
//分析:sum(100)=sum(99)+100
// sum(n)=sum(n-1)+n
function sum(n){
if(n==1){
return 1;
}
return sum(n-1)+n;
}
alert(sum(100));
//使用递归打印n个hello world
function print(n){
if(n==0){
return ;
}
document.write("hello world<br />");
return print(n-1);
}
alert(print(10));  

 

7、事件驱动函数

 

事件驱动函数:和页面交互的行为称为事件,比如鼠标点击某个按钮(onclick)。
鼠标浮动或离开。到某个区域时(onmouseover,onmouseout),
文本框获取焦点和失去焦点(onfocus,onblur)时等。
我们可以通过document.getElementById找到符合条件的标签节点。
然后可以童事件驱动函数给当前的按钮绑定一系列操作。完成用户交互。
例1:
<script type="text/javascript">
window.onload =function(){//写在这里代码,在页面加载完成以后再执行。
var oBtn = document.getElementById("btn");
alert(oBtn);
}
</script>
<body>
<input type="button" value="按钮" id="btn" />
</body>
例2:
<script type="text/javascript">
window.onload =function(){//写在这里代码,在页面加载完成以后再执行。
var oBtn = document.getElementById("btn");
//alert(oBtn);
//给按钮添加事件驱动函数。
//单击onclick。这个函数是在按钮被点击以后,触发的。
oBtn.onclick = function(){
alert("单击");
}
}

 

 1 <html>
 2     <head>
 3         <meta charset="utf-8">
 4         <title>docoment</title>
 5         <script type="text/ecmascript">
 6             window.onload = function(){
 7                 var oBtn = document.getElementById("btn");
 8                 var oTxt = document.getElementById("txt");
 9                 //给按钮添加事件驱动函数
10                 oBtn.onclick = function(){
11                     //要将文本中的内容清空
12                     //oTxt.value = "";  是字符串
13                     
14                     //输出文本中的内容
15                     alert(oTxt.value)
16                     //修改文本中的内容
17                     oTxt.value = "修改后的内容";
18                     
19                 }
20             }
21             
22         </script>
23         
24     </head>
25     <body>
26         <input type="text" value="默认文字" id="txt"/>
27         <input type="button" value="清空" id="btn" />
28     </body>
29 </html>
View Code

 

posted @ 2020-06-25 17:13  梦晶秋崖  阅读(152)  评论(0编辑  收藏  举报
返回顶端