详细分析JavaScript函数定义


Posted in Javascript onJuly 16, 2015

函数

几个要点:

                a).函数是javascript中的一等公民 (重要性)
                b).函数是一个对象
                c).函数定义了一个独立的变量作用域

定义方式

a)命名函数:

          除非在另一个函数内部定义,否则,命名函数是全局的。 

// 全局的命名函数
  function add(x, y) {
    return x + y;
  }
  console.info(add(100, 200));  //300

b)匿名函数:   

            匿名函数通常赋值给一个变量,再通过变量调用。

var func = function (x, y) {
      return x + y;
    }
    console.info(func(5, 2)); //7

            匿名函数适用于以下这种 “立即执行的匿名函数” 的情况:

console.info(
      function (x, y) {
            return x + y;
          }(100, 200)  //立即调用
        );

C)定义方式影响代码执行效果

                命名函数可以先使用,再定义

console.info(sum(10, 10));
    function sum(num1, num2) {
      return num1 + num2;
    }

              匿名函数必须先定义,再使用

//console.info(sumFunc(10, 10));  //Uncaught TypeError: Property 'sumFunc' of object [object Object] is not a function 
    var sumFunc = function (num1, num2) {
      return num1 + num2;
    };
    console.info(sumFunc(10, 10));

函数返回值:

                 用return 生成返回值.如没有return ,则函数返回undefined

function func() {
 }
 console.info(func()); //undefined
 function func2() {
   return; //空的返回语句
 }
 console.info(func2()); //undefined

return里藏着的坑:

var func = function (x, y) {
   var sum = x + y;
   return {
     value : sum
   }
 }

                   这么写没有问题:   调用 func(5,5)    返回的是 Object {value: 10}

                   然而: 

var func = function (x, y) {
    var sum = x + y;
    return
    {
      value: sum
    };
  }
  console.info(func(5,5)); //undefined

                   return 后面跟着个回车换行的话,
                   调用 func(5,5)    显示的是 undefined
                   编辑器帮我们在return后加了个分号;   然而在这情况下并没有什么卵用。

函数即对象:

function add(x, y) {
    return x + y;
  }
  console.info(add(100, 200)); //300
  var other = add; //other和add引用同一函数对象
  console.info(other(300, 400)); //700
  console.info(typeof other);  //function
  console.info(add === other); //true

嵌套定义的函数:

                  在函数内部,可以定义另一个函数。

function outerFunc(a, b) {
    function innerFunc(x) {
      return x * x;
    }
    return Math.sqrt(innerFunc(a) + innerFunc(b));
  }
  console.info(outerFunc(3, 4)); //5

访问外部变量:

             内部函数可以访问外部的变量与参数。

var globalStr = 'globalStr';
 function outerFunc2(argu) {
   var localVar = 100;
   function innerFunc2() {
     localVar++;
     console.info(argu + ":" + localVar + ":" + globalStr);
   }
   innerFunc2(); //hello:101:globalStr
 }
 outerFunc2("hello");

返回函数的函数:

               因为函数是对象,所以可以作为返回值。

function outerFunc(x) {
    var y = 100;
    return function innerFunc() {
      console.info(x + y);
    }
  }
  outerFunc(10)(); //110

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
JavaScript中两种链式调用实现代码
Jan 12 Javascript
extJS中常用的4种Ajax异步提交方式
Mar 07 Javascript
jquery获取checkbox的值并post提交
Jan 14 Javascript
JavaScript内存管理介绍
Mar 13 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
Dec 24 Javascript
JavaScript获取URL参数的方法之一
Mar 24 Javascript
javascript完美实现给定日期返回上月日期的方法
Jun 15 Javascript
微信小程序 密码输入(源码下载)
Jun 27 Javascript
webuploader实现上传图片到服务器功能
Aug 16 Javascript
JavaScript函数的特性与应用实践深入详解
Dec 30 Javascript
json 带斜杠时如何解析的实现
Aug 12 Javascript
微前端qiankun改造日渐庞大的项目教程
Jun 21 Javascript
jQuery时间轴插件使用详解
Jul 16 #Javascript
jQuery实现定时读取分析xml文件的方法
Jul 16 #Javascript
Javascript函数的参数
Jul 16 #Javascript
Javascript简单改变表单元素背景的方法
Jul 15 #Javascript
JavaScript基于ajax编辑信息用法实例
Jul 15 #Javascript
JavaScript实现对下拉列表值进行排序的方法
Jul 15 #Javascript
jQuery简单实现验证邮箱格式
Jul 15 #Javascript
You might like
PHP高级OOP技术演示
2009/08/27 PHP
php读取大文件示例分享(文件操作类)
2014/04/13 PHP
php实现的短网址算法分享
2014/06/20 PHP
非常好用的Zend Framework分页类
2014/06/25 PHP
php实现的表单验证类完整示例
2019/08/13 PHP
html超链接打开窗口大小的方法
2013/03/05 Javascript
两个数组去重的JS代码
2013/12/04 Javascript
浅析JavaScript中两种类型的全局对象/函数
2013/12/05 Javascript
Node.js实现的简易网页抓取功能示例
2014/12/05 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
2017/05/24 Javascript
浅谈React Native 中组件的生命周期
2017/09/08 Javascript
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
如何检查一个对象是否为空
2019/04/11 Javascript
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
python提取照片坐标信息的实例代码
2019/08/14 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
基于Tensorflow:CPU性能分析
2020/02/10 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
2020/12/01 Python
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
职业生涯规划设计步骤
2014/01/12 职场文书
班组长竞聘书
2014/03/31 职场文书
学生会干部自我鉴定2014
2014/09/18 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
上甘岭观后感
2015/06/10 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
小学总务工作总结
2015/08/13 职场文书
话题作文之生命的旋律
2019/12/17 职场文书
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
2021/05/12 Python