JavaScript 函数的使用

 

一、函数:

1.函数的定义:

function 函数名(var1, var2, ....,varX) {

         // 函数体

}

2.函数的调用:函数名(1, 2, 3);

 

二、return的几种形式:

1. 当函数没有写return时,也会默认返回undefined

2. 如果return后面跟内容了,返回return后面的内容

3. 直接return返回,返回值为undefined;

4. 推荐的做法是要么让函数始终都返回一个值,要么永远不要返回值。

 

三、参数:

1、在Js中。实参的个数可以与形参的个数不一致。

2、当调用getSum的适合,会把实参的a、b 复制一份传递给getSum函数。

 

重载:方法的签名相同(函数的返回值、函数名称、函数参数),其他语言c++,java,c#都有方法的重载。

函数的名字相同,但是参数个数不同。

Js中没有方法的重载。下面的同名函数,会把上面的同名函数覆盖。在js中,不允许出现同名的函数。

function f1(a, b) {

         return a + b;

}

function f1(a, b, c) {

         return a + b + c;

}

三个参数的f1会把2个参数的f1覆盖,调用的是三个参数的f1.证明js中没有重载。

 

四、函数的两种定义方式:

1、函数声明

         function f(a, b) {

                   return a + b;

         }

         console.log(f(a, b));

2、函数表达式:myFunf等价

         var myFun = function(a, b) {

                   return a + b;

         }

         console.log(myFun(a, b));

两种方式的区别:

为什么先调用也可使用 函数声明的函数。但是不能这样调用函数表达式形式的函数。

console.log

 

五、函数的作用域:(全局作用域,局部作用域)

全局作用域:在任何位置都可以访问, 在<script>标签内部定义的变量。

局部作用域:在函数内部声明一个变量,只能在该函数内部使用。

当变量超出作用域之后,变量会被垃圾回收机制销毁。

全局变量,一直存在,除非浏览器关闭,变量才会被销毁。

不使用var声明的变量,为全局变量。

函数内部可以访问到改函数所属的外部作用域的变量。

 

JavaScript中没有块级别的作用域。块内{} 声明的变量,都是全局变量。

if(true) {

    var name = "abc";

}

console.log(name); // 可以访问到name变量。在其他语言中,是不可以这么访问的。

 

 

六、例子

var num = 10;

fun();

function fun(){

         console.log(num);

         var num =22;

}

 

解析

1、预解析,全局作用域预解析。

         // 先找var、function和参数

         // 找到var和function后,会把var和function声明 提前到<script>标签下。

                   num = 10;

                  fun();

 

2、解析一行,执行一行. 从上到下执行代码。

                   执行到fun后,进入局部作用域

                            预解析

                                     // num

                            从上到下一行一行执行代码。

 

七、函数提升

1、变量提升

         -定义变量的时候,变量的声明会被替身到作用域的最上面,变量的赋值不会提升。

2、函数提升

         -js解析器会首先吧当前作用域的函数声明提前到整个作用域的最前面。

 

 

八、匿名函数

没有命名的函数:一般用在绑定事件的时候。

语法:function{}

自调用函数:

// 匿名函数的使用(自调用函数),只能执行一次   。可以避免变量命名的冲突。

(function() {alert ("hello world")}) ();  

var myFun = function () {}

(function () {

         console.log("test");

}) ();

======================================

九、Function作为参数传递。

1、函数是一种数据类型 function
2、函数可以作为另一个函数的参数。函数也可以作为另一个函数的返回值
function getResult(a, b, fn) {
    // fn(a, b);
    return fn(a, b); // 使用传递进来的函数
}
var result = getResult(5,6, function(a, b) {
    return a + b;
    // console.log(a + b);
});
console.log(result); // 值为undefined

3、eg 例子:
function f1(a, fn) {
    fn(a); // 使用传递进来的函数
}

var n=5;
var myFun = function(a) {
    console.log(a);
};
f1(n, myFun); // myFun不能带括号

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值