js中的函数

函数

函数:由事件驱动的或者当它被调用时执行的可重复使用的代码块。语法格式:

function 函数名(参数1,参数2) {         //用关键字function来声明函数
这里要执行的代码
}
函数名(参数1,参数2)    //调用函数

注意:javaScript 对大小写敏感。关键词 function 必须是小写的,并且必须以与函数名称相同的大小写来调用函数。

函数的声明

第一种function关键字:

 function foo(x, y) {
        return x + y
    }

这种声明方式可以通过函数名来调用

第二种:函数表达式

这种方式:没有函数名而是通过变量名来代替函数名,调用函数的时候通过访问变量来调用

var foo = function (x, y) {
        return x + y
    };

第三种:function构造函数,没有人用

var foo = new function()

带有返回值的函数

 var foo = function (x, y) {
        return x + y
    };
    var f = foo(3, 4);
    alert(f)
注意:在使用 return 语句时,函数会停止执行并不是整个javascript 停止,并返回指定的值 ,函数的返回值你不需要声明他只需要使用 return 运算符后跟要返回的值即可。如果return没有返回值,那么接收return的值等于undefined
// 普通函数定义
function f1() {
  console.log("Hello world!");
}

// 带参数的函数
function f2(a, b) {
  console.log(arguments);  // 内置的arguments对象
  console.log(arguments.length);
  console.log(a, b);
}

// 带返回值的函数
function sum(a, b){
  return a + b;
}
sum(1, 2);  // 调用函数

// 匿名函数方式
var sum = function(a, b){
  return a + b;
}
sum(1, 2);

// 立即执行函数
(function(a, b){
  return a + b;
})(1, 2);

局部变量

在JavaScript函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它(该变量的作用域是函数内部)。只要函数运行完毕,本地变量就会被删除。

 function myfunction() {
        var n = 3; //这里用var声明

    }

    myfunction();
    console.log(n);

//结果报错,没有定义

全局变量:

1.在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。

     n = 11;
    var foo = function () {
        console.log('foo的n', n)

    };

    function myfunction() {
        console.log('myfunction的n', n)

    }

    myfunction();
    foo();
    console.log('全局的n',n);

结果:

myfunction的n 11
foo的n 11
全局的n 11

2.如果在函数内没有声明该变量时,该变量是全局变量.

 function myfunction() {
        n = 3; //这里没有用var声明,该变量就是全局变量

    }

    myfunction();
    console.log(n);

结果:

  3

 

变量生存周期:

JavaScript变量的生命期从它们被声明的时间开始。

局部变量会在函数运行以后被删除。

全局变量会在页面关闭后被删除。

 

几个例子:


 

var city = "BeiJing";
function f(){
    var city = "ShangHai";
    function inner(){
        console.log(city);
    }
    return inner;
}
var ret = f();
ret();
var city = "BeiJing";
function Bar() {
  console.log(city);
}
function f() {
  var city = "ShangHai";
  return Bar;
}
var ret = f();
ret();  // 打印结果是?
原文地址:https://www.cnblogs.com/sticker0726/p/10926242.html