详细分析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 相关文章推荐
firefox中用javascript实现鼠标位置的定位
Jun 17 Javascript
firefox和IE系列的相关区别整理 以备后用
Dec 28 Javascript
jquery插件splitScren实现页面分屏切换模板特效
Jun 16 Javascript
每天一篇javascript学习小结(Date对象)
Nov 13 Javascript
Javascript字符串拼接小技巧(推荐)
Jun 02 Javascript
带有定位当前位置的百度地图前端web api实例代码
Jun 21 Javascript
jQuery中text() val()和html()的区别实例详解
Jun 28 Javascript
微信小程序 request接口的封装实例代码
Apr 26 Javascript
layui实现文件或图片上传记录
Aug 28 Javascript
vue.js编译时给生成的文件增加版本号
Sep 17 Javascript
javascript实现5秒倒计时并跳转功能
Jun 20 Javascript
Vue的生命周期操作示例
Sep 17 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网站地图生成类示例
2014/01/13 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
php 将json格式数据转换成数组的方法
2018/08/21 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
VBScript版代码高亮
2006/06/26 Javascript
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
2007/03/06 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
js控制容器隐藏出现防止样式变化的两种方法
2014/04/25 Javascript
Javascript中获取对象的原型对象的方法小结
2015/02/25 Javascript
原生js和jquery实现图片轮播特效
2015/04/23 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
开启BootStrap学习之旅
2016/05/04 Javascript
Bootstrap导航条学习使用(一)
2017/02/08 Javascript
Node.js  事件循环详解及实例
2017/08/06 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
js实现带箭头的进度流程
2020/03/26 Javascript
鸿蒙系统中的 JS 开发框架
2020/09/18 Javascript
[33:19]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第一场 11.26
2020/11/30 DOTA
pandas对dataFrame中某一个列的数据进行处理的方法
2019/07/08 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
python 实现方阵的对角线遍历示例
2019/11/29 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
日本PLST在线商店:日本时尚杂志刊载的人气服装
2016/12/10 全球购物
eBay加拿大站:eBay.ca
2019/06/20 全球购物
Java的基础面试题附答案
2016/01/10 面试题
什么是设计模式
2012/06/17 面试题
汽车工程专业应届生求职信
2013/10/19 职场文书
领班岗位职责范文
2014/02/06 职场文书
学习演讲稿范文
2014/05/10 职场文书
2015年度个人思想工作总结
2015/04/08 职场文书
离婚律师函范本
2015/05/27 职场文书
郭明义电影观后感
2015/06/08 职场文书
68行Python代码实现带难度升级的贪吃蛇
2022/01/18 Python