资讯专栏INFORMATION COLUMN

初步认识函数

Rango / 1756人阅读

摘要:函数对象连接到。好处有助于确保全局名字空间的纯净性私有性保留了自己的函数,不为外部应用程序所用返回自己的函数函数始终有一个返回值,即便不是显示返回,它们会隐式返回一个。

函数 概念:

</>复制代码

  1. 函数包含一组语句,它们是javaScript基础模块单元,用于代码复用、信息隐藏和组合调用。用于指定对象的行为。

函数对象:

</>复制代码

  1. javascrtipt中的函数就是对象。对象是‘名/值’对的集合并拥有一个连到原型对象的隐藏连接。 对象字面量产生产生的对象连接到Object.prototype。函数对象连接到Function.prototype。每个函数在创建时会附加两个属性,函数的上下文和函数实现的代码

函数定义

有三种方式可以定义函数

</>复制代码

  1. 1. 使用函数声明语法·定义函数

</>复制代码

  1. function sumsum1sum2{
  2. return num1+num2;
  3. }

</>复制代码

  1. 2. 使用函数表达式定义函数:

</>复制代码

  1. var sum = functionsum1sum2{
  2. return num1+num2;
  3. }

</>复制代码

  1. 3. 构造函数

</>复制代码

  1. function Person() {
  2. this.name = "a";
  3. return
  4. }
函数参数:

当函数被调用时,会得到一个“免费”分配的参数:argument数组。函数可以通过此参数访问所有它被调用时传递给它的参数列表,包括那些没有被分配给函数声明时定义的形式参数。它只是一个类数组,拥有一个Length属性,但没有数组的任何方法。

</>复制代码

  1. //可以不指定参数个数
  2. function add(){
  3. var sum = 0;
  4. for(var i = 0, l = arguments.length; i < l; i++){
  5. sum += arguments[i];
  6. }
  7. return sum;
  8. }
  9. add(1,2,3);//6
函数返回:

</>复制代码

  1. return可以用来使函数提前返回,如果没有指定,则返回undefined
    如果函数调用时在前面加上new前缀,且返回值不是一个对象,则返回this(该新对象)。

函数调用:

</>复制代码

  1. javaScript一共有4中调用模式:方法调用模式,函数调用模式,构造器调用模式和apply调用模式。

调用运算符是函数表达式后的一对圆括号。

方法调用模式
当函数被保存为对象属性时,称他为一个方法。当一个方法被调用时,this被绑定到该对象。

</>复制代码

  1. var myObject = {
  2. value:0,
  3. increment:function(inc){
  4. this.value += typeof inc === "number"?inc:1;
  5. }
  6. };
  7. myObject.increment(2);
  8. myObject.value//3

函数调用模式
当函数并非一个对象的属性时,就是当作函数调用的

</>复制代码

  1. var sum = add(1,2);

构造器调用模式

</>复制代码

  1. //创建一个名为Quo的构造函数。构造一个带有status的属性
  2. var Quo = function(string){
  3. this.status = string;
  4. };
  5. //给Quo的所有实例提供一个名为get_status的公共方法。
  6. Quo.prototype.get_status = function(){
  7. return this.status;
  8. };
  9. //构建一个Quo的实例
  10. var myQuo = new Quo("confused");
  11. document.writeln(myQuo.get_status());//confused

 apply调用模式

</>复制代码

  1. 因为javaScript是一门函数式的面对对象编程语言,所以函数可以拥有方法。

apply方法让我们构建一个参数数组传递给调用函数。它允许我们选择this值。apply方法接收两个参数,第一个是要绑定给this的值,第二个是参数数组。

</>复制代码

  1. // 构造一个包含两个数字的数组,并把它们相加
  2. var statusObject = {
  3. status:"A-Ok"
  4. };
  5. var status = Quo.prototype.get_status.apply(statusObject);
匿名函数:

</>复制代码

  1. function(a){
  2. return a;
  3. }

用法;

将匿名函数作为参数传递给其他函数。这样接收方函数就你利用我们所传递的函数来完成一些事情。(也就是回调函数)

定义某个匿名函数来执行某些一次性任务。(也就是自调函数)

回调函数:

</>复制代码

  1. 把函数当成参数传递给其他函数

</>复制代码

  1. //add就是回调函数,如果add为匿名函数,就称它为匿名回调函数
  2. function add(a,b){
  3. return a() + b ();
  4. }
  5. function a(){
  6. return 1;
  7. }
  8. function b(){
  9. return 2;
  10. }
  11. add(a,b);//3
自调函数:

自行调用的函数:

</>复制代码

  1. (function(){
  2. alert("foo");
  3. })()//第二对括号起到立即调用的作用,同时也是传递参数的地方

好处:使用自调匿名函数不会产生任何全局变量。但也无法重复执行。比较适合执行一些一次性或初始化的任务。

</>复制代码

  1. function a(param){
  2. function b(theinput){
  3. return theinput*2;
  4. }
  5. return "The result is " + b(param);
  6. }
  7. a(2);//The result is 4
  8. b(2);//b is not define

好处:

有助于确保全局名字空间的纯净性

私有性:保留了自己的函数,不为外部应用程序所用

返回自己的函数:

函数始终有一个返回值,即便不是显示返回,它们会隐式返回一个undefined。也可能是返回另一个函数。

</>复制代码

  1. function a(){
  2. alert("A!");
  3. return function(){
  4. alert("B!");
  5. }
  6. }
  7. a()();//可以直接加上括号执行
能重写自己的函数:

由于一个函数可以返回另一个函数,因此我们也可以用新的函数来覆盖旧的。

</>复制代码

  1. function a(){
  2. alert("A!");
  3. a = function(){
  4. alert("B!");
  5. };
  6. }
  7. 这样一来,第一次调用该函数时:
  8. alert("A!")会被执行(可以看为一次性的操作)
  9. 全局变量会被重新定义,被赋予新的函数
  10. 如果再次被调用将执行alert("B!");

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/91010.html

相关文章

  • JavaScript面向对象初步认识

    摘要:一面向对象初步认识什么是对象一句话解释万物皆对象对象是有属性的用来写入对象的应用接口接口简单的说就是后台提供给前端提供数据的,让我们进行渲染请求接口的时候我们会用到一个函数小例子代码如下背心吊带无袖打底衫内搭 一、面向对象初步认识 1.什么是对象? 一句话解释: 万物皆对象 对象是有属性的:用{ }来写入! 2.对象的应用(接口) jsonshowImg(https://segment...

    selfimpr 评论0 收藏0
  • JavaScript面向对象初步认识

    摘要:一面向对象初步认识什么是对象一句话解释万物皆对象对象是有属性的用来写入对象的应用接口接口简单的说就是后台提供给前端提供数据的,让我们进行渲染请求接口的时候我们会用到一个函数小例子代码如下背心吊带无袖打底衫内搭 一、面向对象初步认识 1.什么是对象? 一句话解释: 万物皆对象 对象是有属性的:用{ }来写入! 2.对象的应用(接口) jsonshowImg(https://segment...

    kbyyd24 评论0 收藏0
  • JavaScript面向对象初步认识

    摘要:一面向对象初步认识什么是对象一句话解释万物皆对象对象是有属性的用来写入对象的应用接口接口简单的说就是后台提供给前端提供数据的,让我们进行渲染请求接口的时候我们会用到一个函数小例子代码如下背心吊带无袖打底衫内搭 一、面向对象初步认识 1.什么是对象? 一句话解释: 万物皆对象 对象是有属性的:用{ }来写入! 2.对象的应用(接口) jsonshowImg(https://segment...

    jonh_felix 评论0 收藏0
  • PHP函数式编程的初步认识

    摘要:函数式编程不是一个框架或工具,而是一种编写代码的方式。函数式编程首先是一个声明式编程范例。举个例子纯函数函数式编程基于的前提是您将基于纯函数构建不可变的程序作为业务逻辑的构建块。 showImg(https://segmentfault.com/img/remote/1460000012402865?w=693&h=339); 最近朋友推荐这本书:Functional PHP ,很多对...

    wwq0327 评论0 收藏0
  • 初步认识pug

    摘要:一初步认识所谓的就是我们之前说的也就是一种通过缩进的方式来编写代码的过程,在编译的过程中,我们不需要考虑标签是否闭合的问题。使用缩进来表示标签间的嵌套关系,这样可以构建一个代码的树状结构持续更新,欢迎大家指教 一、初步认识pug 1.所谓的pug就是我们之前说的jade,也就是一种通过缩进的方式来编写代码的过程,在编译的过程中,我们不需要考虑标签是否闭合的问题。此外,用这种编译方式,加...

    anRui 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<