Javascript我学之二函数定义

本文是金旭亮老师网易云课堂的课程笔记,记录下来,以供备忘

函数

几个要点:

a).函数是javascript中的一等公民 (重要性)

b).函数是一个对象

c).函数定义了一个独立的变量作用域

定义方式

a)命名函数:

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

1                 // 全局的命名函数
2         function add(x, y) {
3             return x + y;
4         }
5         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

1         function func() {
2         }
3         console.info(func()); //undefined
4         function func2() {
5             return;  //空的返回语句
6         }
7         console.info(func2()); //undefined

return里藏着的坑:

1             var func = function (x, y) {
2                 var  sum = x + y;
3                 return {
4                     value : sum
5                 }
6             }

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

然而:

1         var func = function (x, y) {
2             var sum = x + y;
3             return
4             {
5                 value: sum
6             };
7         }
8         console.info(func(5,5)); //undefined

return 后面跟着个回车换行的话,

调用 func(5,5)    显示的是 undefined

编辑器帮我们在return后加了个分号;   然而在这情况下并没有什么卵用。

函数即对象:

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

嵌套定义的函数:

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

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

访问外部变量:

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

 1         var globalStr = ‘globalStr‘;
 2         function outerFunc2(argu) {
 3             var localVar = 100;
 4             function innerFunc2() {
 5                 localVar++;
 6                 console.info(argu + ":" + localVar + ":" + globalStr);
 7             }
 8             innerFunc2(); //hello:101:globalStr
 9         }
10         outerFunc2("hello");

返回函数的函数:

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

1             function outerFunc(x) {
2                 var y = 100;
3                 return function innerFunc() {
4                     console.info(x + y);
5                 }
6             }
7             outerFunc(10)();  //110
时间: 2024-10-14 20:55:27

Javascript我学之二函数定义的相关文章

JavaScript入门学习之二——函数

在前一章中讲了JavaScript的入门语法,在这一章要看看函数的使用. 函数的定义 JavaScript中的函数和Python中的非常类似,只不过定义的方式有些不同,下面看看是怎么定义的 //定义普通函数 function f1(){ console.log('hello world!') } //定义带参数的函数 function f2(a,b){ console.log(a) console.log(b) } //定义带返回值的函数 function f3(a,b){ return a+b

Kotlin(二) 函数定义

1.不带参数,不返回值的函数 fun sum(){} 2.带参数,不带返回值的函数 fun sum(a:Int){} 3.带参数,带返回值的函数 fun sum(a:Int,b:Int) : Int{ return a+b} 4.将表达式作为函数体.返回值类型自动推断的函数 fun sum(a:Int,b:Int) = a+b 5.函数返回无意义的值 fun println(a: Int, b: Int) : Unit{ println("sum of $a and $b is ${a + b}

一 函数定义

一 函数基础 一 为何要用函数之不用函数的问题 二 函数分类 二 函数定义 一 如何自定义函数? 二 函数使用的原则:先定义,再调用 三 函数在定义阶段都干了哪些事? 四 定义函数的三种形式 三 函数调用 一 调用函数 二 函数返回值 三 函数调用的三种形式 四 函数参数 一 形参与实参 二 具体应用 一 函数基础 ## 一 为何要用函数之不用函数的问题 1.代码的组织结构不清晰,可读性差 2.遇到重复的功能只能重复编写实现代码,代码冗余 3.功能需要扩展时,需要找出所有实现该功能的地方修改之,

JavaScript(二) 函数定义以及arguments使用

Function函数定义的三种方式: 1.function语句形式:2.函数直接量的形式 3.构造函数形式前两种创建函数区别:function语句形式,JavaScript解释器直接去找并解释:相当于js代码上来就解释function语句形式:其他的代码从上到下执行可以理解成,第一种可以在任何位置调用:而第二种只能在定义之后调用:第三种具有顶级作用域的作用 arguments对象, 每一个函数内部都有一个arguments对象1.接收函数的实际参数 2.用于递归操作 //Function函数 /

JavaScript新手的第一堂函数课:定义与参数(文末福利)

关注微信公众号[异步图书]每周送书 本文包括以下内容: 理解函数为何如此重要 函数为何是第一类对象 定义函数的方式 参数赋值之谜 在本文这一部分讨论JavaScript基础时,也许你会感到惊讶,我们的第一个论点是函数(function)而非对象(object).当然,第3部分会用大量笔墨解释对象,但归根结底,你要理解一些基本事实,像普通人一样编写代码和像"忍者"一样编写代码的最大差别在于是否把JavaScript作为函数式语言(functional language)来理解.对这一点的

JavaScript函数定义和调用 变量作用域

本文是笔者在看廖雪峰老师JavaScript教程时的个人总结 JavaScript中函数定义可以是这样的格式 function 函数名(参数) { 函数体 } 也可以是这样的格式 var 函数名 = function (参数) { 函数体 }; 关键字一:arguments 获取全部参数 只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数.arguments类似Array但它不是一个Array.第一个参数是arguments[0]....[n] 关键字二:rest 获取 获取除了已定

Javascript异步编程之二回调函数

上一节讲异步原理的时候基本上把回掉函数也捎带讲了一些,这节主要举几个例子来具体化一下.在开始之前,首先要明白一件事,在javascript里函数可以作为参数进行传递,这里涉及到高阶函数的概念,大家可以自行google一下. 传统的同步函数需要返回一个结果的话都是通过return语句实现,例如: function foo() { var a = 3, b = 2; return a+b; } var c = foo(); console.log(c); //5 就是说后面的代码console.lo

JavaScript——函数定义和调用

1.定义函数 定义方式一 绝对值函数 function abs(x){ if(x>=0){ return x; }else{ return -x; } } 上述abs()函数的定义如下: function指出这是一个函数定义: abs是函数的名称: (x)括号内列出函数的参数,多个参数以,分隔: { ... }之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句. 注意: 函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回.因此,函数内部通过条件判断和循环可以

Javascript读书笔记:函数定义和函数调用

定义函数 使用function关键字来定义函数,分为两种形式: 声明式函数定义: function add(m,n) { alert(m+n); } 这种方式等同于构造一个Function类的实例的方式: var add = new Function("m", "n", "alert(m+n);"); Function类构造方法的最后一个参数为函数体:"alert(m+n);",前面的都是函数的形参,参数必须是字符串形式的:&