JavaScript中的函数与类

函数

JavaScript是一种基于对象的脚本语言,JavaScript 代码复用的单位是函数,但它的函数比结构化程序设计语言的函数功能更丰富。函数在JavaScript中非常强大,它可以独立存在,而且JavaScript 的函数可以作为一个类使用,是定义类的唯一途径(即函数与类定义方法基本相同,只是起名时习惯把函数定义成全小写,把类定义成首字母大写),与此同时,函数本身也是一个对象, 函数本身是Function实例。

函数的定义

JavaScript是弱类型语言,在定义是不需要声明返回值类型,不用声明参数的类型。函数的最大作用是提供代码的复用,将需要重复使用的代码块定义成函数,便可以最大程度减轻代码量。

定义函数有三种方法

  1. 定义命名函数
function funct ionName (parameter-list)
{
   
	...
}
//例
hello('china') ;
//定义函数hello,该函数需要一个参数
function hello (name){
   
	alert(name + ", 你好");
}

#注 函数可以有返回值,也可以没有返回值,函数的返回值使用return语句返回,在函数的运行过程中,只要遇到return,函数就结束并且返回。

  1. 定义匿名函数
<script type="text/javascript">
	var f = function (name){
    
		document.writeln('匿名函数<br/>');
		document.writeln('你好' + name) ;
	};
	f('china') ;
</script>

在这里插入图片描述
这种定义方法在JavaScript中非常常见,不用给函数具体的明,而是将函数定义赋值给一个变量,这样调用该变量即可调用该函数

  1. 使用Function类匿名函数
    JavaScript提供了一个Function 类,该类也可以用于定义函数,Function 类的构造器的参数个数可以不受限制,Function 可以接受一系列的字符串参数, 其中最后-一个字符串参数是函数的执行体,执行体的各语句以分号( ; ) 隔开,而前面的各字符串参数则是函数的参数。
//定义匿名函数,并将函数赋给变量f
var f = new Function ('name',"document.writeln('Function定义的函数<br>');"+"document.writeln('你好'+ name) ;") ;
//通过变量调用匿名函数
f('china');

上面代码使用new Function()语法定义了一个匿名函数,并将该匿名函数赋给f变量,从而允许通过f来访问匿名函数。可以注意到在用这种方式时,Function()构造器的最后一个参数包含了函数的作用,当这个函数作用变得复杂时,这个参数将变得十分臃肿,可读性也会变差,尽量不要使用

函数的递归调用

函数不仅仅可以被变量调用,还可以被自己本身调用,在一些特殊情况下,这种我调我自己的方式可以减少很多运算,如计算阶乘

<script type="text/javascript">
    //定义求阶乘的函数
    var factorial = function(n){
    
        //只有n的类型是数值,才执行函数
            if (typeof(n) == "number"){
    
            //当n等于1时,直接返回1
            if(n==1){
    
                return 1;
            }
            //当n不等于1时,通过递归返回值
            else{
    
                return n*factorial(n - 1) ;
            }
            //当参数不是数值时,直接返回
        }
        else{
    
            alert("参数类型不对! ");
        }
        //调用阶乘函数
    }
    alert(factorial(5)) ;
</script>

在这里插入图片描述
运用递归函数时,一定是大问题比较复杂,而小问题类型和大问题相同的情况,并且一定要向一指的方向递归,在上面问题中,5!,10!,n!可能比较难求解,但是1!的值却是确定的,所以要将大问题化小,化到问题为求1!时,问题才能被解决

局部函数

局部函数的概念与局部变量类似,局部变量在函数里用var关键字定义,而局部函数也在函数里定义。函数中定义的函数就叫局部函数

<script type="text/javascript">
    //定义全局函数
    function a (){
    
        //定义第一个局部函数
        function b(){
    
            document.write("局部函数1 <br>");
        }
        //定义第二个局部函数
        function c(){
    
            document
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值