详细分析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 相关文章推荐
基于jquery的表格排序
Sep 11 Javascript
js中的屏蔽的使用示例
Jul 30 Javascript
jQuery实现动画效果circle实例
Aug 06 Javascript
JavaScript实现向右伸出的多级网页菜单效果
Aug 25 Javascript
分享我对JS插件开发的一些感想和心得
Feb 04 Javascript
jQuery基础知识点总结(必看)
May 31 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
Mar 21 Javascript
JS逻辑运算符短路操作实例分析
Jul 09 Javascript
vue实现新闻展示页的步骤详解
Apr 11 Javascript
Vue.js仿Select下拉框效果
Feb 18 Javascript
Vue中watch、computed、updated三者的区别及用法
Jul 27 Javascript
Canvas跟随鼠标炫彩小球的实现
Apr 11 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下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
2013/11/07 PHP
PHP使用正则表达式清除超链接文本
2013/11/12 PHP
五款PHP代码重构工具推荐
2014/10/14 PHP
跟我学Laravel之请求与输入
2014/10/15 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
php进行md5加密简单实例方法
2019/09/19 PHP
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
jQuery ajax dataType值为text json探索分享
2013/09/23 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
2015/11/25 Javascript
javascript加载xml 并解析各节点的值(实现方法)
2016/10/12 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
JS异步函数队列功能实例分析
2017/11/28 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
javascript解析json格式的数据方法详解
2020/08/07 Javascript
Python中operator模块的操作符使用示例总结
2016/06/28 Python
python3 发送任意文件邮件的实例
2018/01/23 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
实用自动化运维Python脚本分享
2018/06/04 Python
pandas 实现字典转换成DataFrame的方法
2018/07/04 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
2020/04/20 Python
python计算auc的方法
2020/09/09 Python
css3 中translate和transition的使用方法
2020/03/26 HTML / CSS
社区服务标语
2014/07/01 职场文书
简爱电影观后感
2015/06/10 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
2016年教师节感言
2015/12/09 职场文书
《浅水洼里的小鱼》教学反思
2016/02/16 职场文书
2016年小学圣诞节活动总结
2016/03/31 职场文书
MySQL 可扩展设计的基本原则
2021/05/14 MySQL
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery