betway必威-betway必威官方网站
做最好的网站

【必威官方网站】JavaScript中的函数,学习笔记

JavaScript中的函数

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
Jscript 支持两种函数:一类是语言内部的函数(如eval() ),另一类是自己创建的。

javascript学习笔记(四)function函数部分,学习笔记function

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
Jscript 支持两种函数:一类是语言内部的函数(如eval() ),另一类是自己创建的。

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

您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。

函数的调用方式

1、普通调用:functionName(实际参数...)

2、通过指向函数的变量去调用:  

var  myVar = 函数名;

myVar(实际参数...);

返回函数的函数

  1. 当函数无明确返回值时,返回的值就是"undefined"。

  2. 当函数有返回值时,返回值是什么就返回什么。

我们可以通过使用 return 语句实现将函数返回调用它的地方。

在使用 return 语句时,函数会停止执行,并返回指定的值。

函数通常会返回一个唯一值,那么这个值也可能是另一个函数:

复制代码 代码如下:

<script type="text/javascript">
    var box = function(){
        var a=1;
        return function(){
            alert(a )
        }
    }
    alert(box());//弹出"function(){alert(a )}"
 </script>

在这里,我们只需将返回值赋值给某个变量,然后就可以像使用一般函数那样调用它了:

复制代码 代码如下:

<script type="text/javascript">
    var box = function(){
        var a=1;
        return function(){
            alert( a)
        }
    }
    var newFunc = box();
    newFunc();//2
 </script>

如果想让返回的函数立即执行,亦可以使用box()()来执行这段代码。

ECMAScript所有函数的参数都是按值传递的,言下之意就是参数不会按引用传递。

PS:如果存在按引用传递的话,那么函数里的那个变量将会是全局变量,在外部也可以访问。

(1)值类型:数值、布尔值、null、undefined。
(2)引用类型:对象、数组、函数。

引用类型值:指的是那些保存在堆内存中的对象,意思是,变量中保存的实际上只是一个指针,这个指针执行内存中的另一个位置,由该位置保存对象;
创建匿名函数

复制代码 代码如下:

function(){
return ‘Lee';     //单独的匿名函数是无法运行的,就算能运行也无法调用,因为没有名字
}

这种匿名函数的用法在JQuery中非常多。直接声明一个匿名函数,立即使用。用匿名函数的好处就是省得定义一个用一次就不用的函数,而且免了命名冲突的问题,js中没有命名空间的概念,因此很容易函数名字冲突,一旦命名冲突以最后声明的为准。

通过自我执行来执行匿名函数:

复制代码 代码如下:

//通过自我执行来执行匿名函数

<script type="text/javascript">
  (function (){         // (匿名函数)();第一圆括号放匿名函数,第二个圆括号执行
       alert('Lee');
  })();
</script>

把匿名函数自我执行的返回值赋给变量:

复制代码 代码如下:

//把匿名函数自我执行的返回值赋给变量

    <script type="text/javascript">
    var box =  (function (){          
           alert('Lee');
      })();         //弹出”Lee”;
    alert(box);   //弹出 undefined,如果写出alert(box()),那么只会弹出一个"Lee"  
    </script>

自我执行匿名函数的传参:

复制代码 代码如下:

//自我执行匿名函数的传参

    <script type="text/javascript">
    (function (age){
     alert(age);
    })(100);          //弹出100
    </script>

javascript创建动态函数:

  JavaScript支持创建动态函数,动态函数必须用Function对象来定义(Function是javascript中的一个对象,是固定不变的,规定Function对象的"F"必须大写,当是function的时候,我们知道是定义函数的时候所使用的一个关键字:function funName(x,y),当是Function的时候(F大写的时候),我们知道是javascript中的对象)

创建动态函数的基本格式:var 变量名 = new Function("参数1","参数2","参数n","执行语句");
看下面的一段代码:

复制代码 代码如下:

    <script type="text/javascript">
            var square = new Function ("x","y","var sum ; sum = x y;return sum;");
             alert("square(2,3)的结果是:" square(2,3));  //square(2,3)的结果是:5
    </script>

square是动态创建的函数,在Function对象后面的括号里的每一部分内容都必须是字符串形式的,也就是说都必须用引号(""或者是'')括起来

这段代码:

var square = new Function ("x","y","var sum ; sum = x y;return sum;");
和下面这段代码:

复制代码 代码如下:

function square (x,y){
          var sum;
必威官方网站,          sum = x y;
          return sum;
     }

是一摸一样的,只不过一个是动态函数,一个是静态函数。
我们为什么要把代码分成一小段一小段的代码呢?,把一个字符串分成了若干个独立的字符串的优点就在于我们可以通过修改其中的某些字符串来随时改变函数的作用。

回调函数

回调就是一个函数的调用过程。那么就从理解这个调用过程开始吧。函数a有一个参数,这个参数是个函数b,当函数a执行完以后执行函数b。那么这个过程就叫回调。

其实中文也很好理解:回调,回调,就是回头调用的意思。函数a的事先干完,回头再调用函数b。

这里必须清楚一点:函数b是你以参数形式传给函数a的,那么函数b就叫回调函数。

在jquery里的绝大多数效果函数都涉及到callback函数。jquery效果函数
例如:

复制代码 代码如下:

<script type="text/javascript">
        $("div").show(1000,function(){
            //callback function
        });
</script>

这里的callback function换成实例可以是:

复制代码 代码如下:

<script type="text/javascript">
    $("div").show(1000,function(){
        console.log("hello world")
    });
</script>

Callback实际上是,当一个函数执行完后,现执行的那个函数就是所谓的callback函数。怎么样?很好理解吧……

方法和函数的区别

复制代码 代码如下:

var arr = [1,2,3,4,5]
var a =12;   // 变量:自由的
arr.a= 5;     //属性:属于一个对象
function show()     //函数:自由的
{
     alert(‘a');
}
arr.fn = function()   //方法:属于一个对象
{
     alert(‘b');
}

其实方法就是函数,只不过方法是有所属的对象。

我们所熟知的,将函数绑定到 click 事件
语法:

$(selector).click(function)
参数 描述
function 可选。规定当发生 click 事件时运行的函数。
这种形式在jquery中经常见到。它是将function当做该方法的参数,向该方法添加一个事件处理函数。

js全局函数

全局函数与内置对象的属性或方法不是一个概念。全局函数它不属于任何一个内置对象。
JavaScript 中包含以下 7 个全局函数,用于完成一些常用的功能:

escape( )、eval( )、isFinite( )、isNaN( )、parseFloat( )、
parseInt( )、unescape( )。
函数的几个作用

作为一个类构造器使用

复制代码 代码如下:

function class(){}
class.prototype={};
var item=new class();

作为闭包使用

复制代码 代码如下:

(function(){
//独立作用域
})();

作为构造函数调用

所谓构造函数,就是通过这个函数生成一个新对象(object)。

复制代码 代码如下:

<script type="text/javascript">
        function test(){
            this.x = 10;
        }

        var obj = new test();
        alert(obj.x); //弹出 10;
 </script>

可以使用 new 运算符结合像 Object()、Date() 和 Function() 这样的预定义的构造函数来创建对象并对其初始化。面向对象的编程其强有力的特征是定义自定义构造函数以创建脚本中使用的自定义对象的能力。创建了自定义的构造函数,这样就可以创建具有已定义属性的对象。下面是自定义函数的示例(注意 this 关键字的使用)。

复制代码 代码如下:

function Circle (xPoint, yPoint, radius) {
    this.x = xPoint;  // 圆心的 x 坐标。
    this.y = yPoint;  // 圆心的 y 坐标。
    this.r = radius;  // 圆的半径。
}

调用 Circle 构造函数时,给出圆心点的值和圆的半径(所有这些元素是完全定义一个独特的圆对象所必需的)。结束时 Circle 对象包含三个属性。下面是如何例示 Circle 对象。

var aCircle = new Circle(5, 11, 99);
使用构造器函数的好处在于,它可以再创建对象时接收一些参数。

复制代码 代码如下:

<script type="text/javascript">
    function Test(name){
        this.occupation = "coder";
        this.name = name;
        this.whoAreYou = function(){
            return "I'm " this.name "and I'm a " this.occupation;
        }
    }
    var obj = new Test('trigkit4');//利用同一个构造器创建不同的对象
    var obj2 = new Test('student');

    obj.whoAreYou();//"I'm trigkit4 and I'm a corder"
    obj2.whoAreYou();//"I'm student and I'm a corder"   
 </script>

依照惯例,我们应该将构造器函数的首字母大写,以便显著地区别于一般的函数。

以下两种形式的定义函数方式是等价的。

复制代码 代码如下:

<script type="text/javascript">
    var test = function(){
        alert("Hello World");
    }
    alert(typeof(test));//output function
</script>

这里明确定义了一个变量test,他的初始值被赋予了一个function实体

复制代码 代码如下:

<script type="text/javascript">
    function test(){
        alert("Hello World");
    }
    alert(typeof(test));//output function
</script>

看看下面这种定义式函数形式:

复制代码 代码如下:

<script type="text/javascript">
        function test(){
            alert("Hello World");
        };
        test();//居然输出Hello,很奇怪不是吗?

        function test(){
            alert("Hello");
        };
        test();//正常滴输出了Hello
</script>

很显然,第一个函数并没有起到作用,很奇怪不是吗?我们知道,javascript解析引擎并不是一行一行地执行代码,而是一段一段地执行代码。在同一段程序的分析执行中,定义式的函数语句会被优先执行,所以第一个定义的代码逻辑已经被第二个覆盖了,所以两次调用相同函数,只会执行第二个。

作为值的函数

函数在js中不仅是一种语法,也是一个值。也就是说可以将函数赋值给变量,存储在对象的属性或数组的元素中,作为参数传入另一个函数中。
函数的名字实际是看不见的,它仅仅是变量的名字,这个变量指代函数对象

复制代码 代码如下:

<script type="text/javascript">
     function square(x,y){
         return x*y;
     }
     var s = square; //s和square指代同一个函数
     square(2,3);//6
     s(2,4);//8
</script>

除了可以将函数赋值给变量,同样可以将函数赋值给对象的属性,当函数作为对象的属性调用时,函数就称为方法

复制代码 代码如下:

<script type="text/javascript">
     var obj = {square:function(x,y){ //对象直接量
         return x*y;
     }};
     var ect = obj.square(2,3);
</script>

prototype属性

每一个函数都包含prototype属性,这个属性指向一个对象的引用,这个对象称为原型对象。
详见:javascript学习笔记(五)原型和原型链

高阶函数

这里的高阶函数可不是高数里的那个高阶函数,所谓高阶函数就是操作函数的函数,它接收一个或多个函数作为参数,并返回新函数

前言

 

很多情况下,程序在执行过程中会反复完成相同或类似的任务,为了避免多次重复编写相同的代码段,

 

JavaScript把部分代码包装为能够重复使用的模块,称为“函数”。函数可以在程序的其他部分使用,就像它是

 

JavaScript语言的组成部分一样。

 

使用函数可以让代码更加易读和维护。函数是JavaScript的基本模块之一,几乎会出现在每个脚本中。

 

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

javascript中function是与Function还有就是new Object()函数都是什

1 function 是函数
2 JS里只有function Function是错误的
3
<body>
<script type ="text/javascript">
var value=new Object(); //定义value为某个类里的一个实例
value.add=new Function("a","b","return a b"); //add是value里的一个方法,他的值就是 return a b ,也就是a和b的和,a和b应该是变量吧?怎么这样写?- - 感觉这里就错了
var result value.add(18,19);//这里定义了一个变量result,偶感觉应该是var result=value.add(18,19),也好像不对。。。
document.write(resulf); //输出result的结果,这里应该是document.write(result);
</script>
</body>

还有上面的Object是什么?没有这样的结构体的。。。自己定义下吧。。。

写个简单的,根本没必要那样写。。。没有类定义就乱来。。。。
<body>
<script type ="text/javascript">
function add(int a,int b){return a b;}
var value;
value=add(18,19);
document.write(result);
</script>
</body>

这么几句话就OK  

.1 基本语法

 

创建函数就好像是创建一个新的JavaScript命令,能够在脚本的其他部分使用。创建函数可以使用关键字

 

funcition,接着是函数的名称,后面紧跟一对圆括号,然后是一对花括号。花括号里面是构成函数的JavaScript语

 

句,如以下范例:

 

<script> function showAlert(){ alert(Hello JavaScript) } </script>

 

您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。

javascript 里 function() {函数名();} 这种写法是什

一个函数调用另一个函数,这有什么啊?就是这个函数中调用了另一个函数而已。函数定义注意一下,无名函数如果不立即执行是不会进行调用的!  

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。 Jscript 支持两...

.2 调用函数

 

在页面加载时,包含在函数定义区域内的代码不会被执行,而是在被调用时执行,调用函数只需要使用函数名

 

称,就可以在需要的地方执行函数的代码,如以下范例:

 

 

<script> function showAlert(){ alert(Hello JavaScript) } </script>

 

显示的效果如下:

 

必威官方网站 1

 

函数的调用方式

把JavaScript代码放置到页面的

区域

 

到目前为止,我们的范例都把JavaScript代码放置到HTML页面的

区域。为了更好地发挥函数的作用,我

 

们要采取更适当的方式,也就是把JavaScript代码放置到页面的

区域。当函数位于页面区域的<script>

元素里,或是位于页面区域的<script>元素的src属性所指向的外部文件时,它就可以从页面的任何位置被调

用。把函数放到文档的head部分能够确保它们被调用之前已经被定义了。如以下范例:

    <script>
        function showAlert(){
            alert(Hello JavaScript)
        }
    </script>



 
.3 参数
 
如果函数只是像前面范例中那样在每次调用时只能实现完成相同的操作,那么其应用就会受到很大的局限。好在
 
我们可以通过向函数传递数据来扩展函数的功能,其实现方法在调用函数时给它传递一个或多个”参数“。如以下范
 
例:
 
 

<script> function sum(a,b){ alert(a b); } </script>

 

 

我们通过传递两个参数,通过alert来显示两数相加的结果。

 

效果如下:

 

必威官方网站 2

 

 

 

1、普通调用:functionName(实际参数...)

.4 从函数返回值

 

前面范例展示了如何向函数传递参数,让函数来对这些数据进行处理,那么,如何从函数获得数据呢?毕竟,我

 

们不能只通过弹出对话框来获得函数的结果。从函数返回数据,我们可以使用关键字return。如以下范例:

 

 

<script> function sum(a,b){ var num=a b; return num; } </script>

 

以上通过onClick点击事件调用了函数sum,并传入两个参数,函数sum通过return返回两数的和,并通过document对象

 

的write方法向页面输出数据。(var关键字是用于声明变量的)

 

效果如下:

 

必威官方网站 3

 

 

 

 

 

前言 很多情况下,程序在执行过程中会反复完成相同或类似的任务,为了避免多次重复编写相同的代码段, JavaScript把部...

2、通过指向函数的变量去调用:  

var  myVar = 函数名;

myVar(实际参数...);

返回函数的函数

  1. 当函数无明确返回值时,返回的值就是"undefined"。

  2. 当函数有返回值时,返回值是什么就返回什么。

我们可以通过使用 return 语句实现将函数返回调用它的地方。

在使用 return 语句时,函数会停止执行,并返回指定的值。

函数通常会返回一个唯一值,那么这个值也可能是另一个函数:

复制代码 代码如下:

<script type="text/javascript">
    var box = function(){
        var a=1;
        return function(){
            alert(a )
        }
    }
    alert(box());//弹出"function(){alert(a )}"
 </script>

在这里,我们只需将返回值赋值给某个变量,然后就可以像使用一般函数那样调用它了:

复制代码 代码如下:

<script type="text/javascript">
    var box = function(){
        var a=1;
        return function(){
            alert( a)
        }
    }
    var newFunc = box();
    newFunc();//2
 </script>

如果想让返回的函数立即执行,亦可以使用box()()来执行这段代码。

ECMAScript所有函数的参数都是按值传递的,言下之意就是参数不会按引用传递。

PS:如果存在按引用传递的话,那么函数里的那个变量将会是全局变量,在外部也可以访问。

(1)值类型:数值、布尔值、null、undefined。
(2)引用类型:对象、数组、函数。

引用类型值:指的是那些保存在堆内存中的对象,意思是,变量中保存的实际上只是一个指针,这个指针执行内存中的另一个位置,由该位置保存对象;
创建匿名函数

复制代码 代码如下:

function(){
return ‘Lee';     //单独的匿名函数是无法运行的,就算能运行也无法调用,因为没有名字
}

这种匿名函数的用法在JQuery中非常多。直接声明一个匿名函数,立即使用。用匿名函数的好处就是省得定义一个用一次就不用的函数,而且免了命名冲突的问题,js中没有命名空间的概念,因此很容易函数名字冲突,一旦命名冲突以最后声明的为准。

通过自我执行来执行匿名函数:

复制代码 代码如下:

//通过自我执行来执行匿名函数

<script type="text/javascript">
  (function (){         // (匿名函数)();第一圆括号放匿名函数,第二个圆括号执行
       alert('Lee');
  })();
</script>

把匿名函数自我执行的返回值赋给变量:

复制代码 代码如下:

//把匿名函数自我执行的返回值赋给变量

    <script type="text/javascript">
    var box =  (function (){          
           alert('Lee');
      })();         //弹出”Lee”;
    alert(box);   //弹出 undefined,如果写出alert(box()),那么只会弹出一个"Lee"  
    </script>

自我执行匿名函数的传参:

复制代码 代码如下:

//自我执行匿名函数的传参

本文由betway必威发布于网页设计,转载请注明出处:【必威官方网站】JavaScript中的函数,学习笔记

Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。