详细分析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 相关文章推荐
MooTools 1.2介绍
Sep 14 Javascript
jquery keypress,keyup,onpropertychange键盘事件
Jun 25 Javascript
JavaScript让网页出现渐隐渐显背景颜色的方法
Apr 21 Javascript
jquery衣服颜色选取插件效果代码分享
Aug 28 Javascript
jQuery实现的分子运动小球碰撞效果
Jan 27 Javascript
gulp-htmlmin压缩html的gulp插件实例代码
Jun 06 Javascript
jQuery实现拖拽可编辑模块功能代码
Jan 12 Javascript
扩展bootstrap的modal模态框-动态添加modal框-弹出多个modal框
Feb 21 Javascript
微信小程序获取循环元素id以及wx.login登录操作
Aug 17 Javascript
解决vue-router进行build无法正常显示路由页面的问题
Mar 06 Javascript
js实现下拉框二级联动
Dec 04 Javascript
JavaScript 实现下雪特效的示例代码
Sep 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
文件上传程序的全部源码
2006/10/09 PHP
PHP 文件编程综合案例-文件上传的实现
2013/07/03 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
点击文章内容处弹出页面代码
2009/10/01 Javascript
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
JS插件overlib用法实例详解
2015/12/26 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
Vue.JS入门教程之自定义指令
2016/12/08 Javascript
js实现颜色阶梯渐变效果(Gradient算法)
2017/03/21 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
JS中Swiper的使用和轮播图效果
2017/08/11 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
2019/09/24 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
2020/10/23 Javascript
js仿淘宝放大镜效果
2020/12/28 Javascript
JavaScript实现页面高亮操作提示和蒙板
2021/01/04 Javascript
[02:31]DOTA2帕克 英雄基础教程
2013/11/26 DOTA
[50:15]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python操作SQLite简明教程
2014/07/10 Python
跟老齐学Python之私有函数和专有方法
2014/10/24 Python
在Python的Django框架中调用方法和处理无效变量
2015/07/15 Python
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
python机器学习之神经网络(三)
2017/12/20 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
python实现简单的文字识别
2018/11/27 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
python读取txt文件,去掉空格计算每行长度的方法
2018/12/20 Python
Python2和Python3之间的str处理方式导致乱码的讲解
2019/01/03 Python
Django CBV类的用法详解
2019/07/26 Python
python opencv实现信用卡的数字识别
2020/01/12 Python
Python startswith()和endswith() 方法原理解析
2020/04/28 Python
python访问hdfs的操作
2020/06/06 Python
TripAdvisor土耳其网站:全球知名旅行社区,真实旅客评论
2017/04/17 全球购物
个人自我评价范文
2014/02/05 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
微信小程序基础教程之echart的使用
2021/06/01 Javascript
英镑符号 £
2022/02/17 杂记