详细分析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 prototype属性深入介绍
Nov 27 Javascript
js中小数转换整数的方法
Jan 26 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
May 11 Javascript
require.js深入了解 require.js特性介绍
Sep 04 Javascript
IE下JS保存图片的简单实例
Jul 15 Javascript
Angularjs 实现分页功能及示例代码
Sep 14 Javascript
jQuery联动日历的实例解析
Dec 02 Javascript
详解angular ui-grid之过滤器设置
Jun 07 Javascript
微信小程序实战篇之购物车的实现代码示例
Nov 30 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
Dec 26 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
Sep 25 Javascript
JavaScript canvas实现跟随鼠标移动小球
Feb 09 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数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
2013/01/22 Javascript
浅析JS中document对象的一些重要属性
2014/03/06 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
JavaScript reduce和reduceRight详解
2016/10/24 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
2017/03/29 Javascript
Vue的Class与Style绑定的方法
2017/09/01 Javascript
js时间戳与日期格式之间相互转换
2017/12/11 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
JavaScript跳出循环的三种方法(break, return, continue)
2019/07/30 Javascript
微信小程序实现图片压缩
2019/12/03 Javascript
小程序卡片切换效果组件wxCardSwiper的实现
2020/02/13 Javascript
design vue 表格开启列排序的操作
2020/10/28 Javascript
VUE实现吸底按钮
2021/03/04 Vue.js
python生成带有表格的图片实例
2019/02/03 Python
浅谈Python基础—判断和循环
2019/03/22 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
CSS3颜色值RGBA与渐变色使用介绍
2020/03/06 HTML / CSS
哈萨克斯坦移动和数字技术在线商店:SatelOnline.kz
2020/09/04 全球购物
迷你西餐厅创业计划书范文
2013/12/31 职场文书
市场部管理制度
2014/02/02 职场文书
《晏子使楚》教学反思
2014/02/08 职场文书
企业宣传工作方案
2014/06/02 职场文书
主题党日活动总结
2014/07/08 职场文书
公司员工活动策划方案
2014/08/20 职场文书
2014年组织委员工作总结
2014/12/01 职场文书
考试没考好检讨书
2015/05/06 职场文书
舞出我人生观后感
2015/06/16 职场文书
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技