js函数的定义

1.函数声明

function print(msg){
  console.log(msg);
}
print(1);

被声明的函数不会直接执行。

它们被“保存供稍后使用”,将在稍后执行,当它们被调用时。

 

2.函数表达式

var x = function (a, b) {return a * b};
var z = x(4, 3);

上面的函数实际上是一个匿名函数(没有名称的函数)。

存放在变量中的函数不需要函数名。他们总是使用变量名调用。

 

3.Function() 构造器

JavaScript 函数是通过 function 关键词定义的。

函数也可以通过名为 Function() 的内建 JavaScript 函数构造器来定义。

var myFunction = new Function("a", "b", "return a * b");
var x = myFunction(4, 3);
// 等价于
var myFunction = function (a, b) {return a * b};
var x = myFunction(4, 3);

 

函数提升

提升是 JavaScript 将声明移动到当前作用域顶端的默认行为。

提升应用于变量声明和函数声明。

正因如此,JavaScript 函数能够在声明之前被调用:

myFunction(5);
function myFunction(y) {
     return y * y;
}

使用表达式定义的函数不会被提升。

 

自调用函数

函数表达式可以作为“自调用”。

自调用表达式是自动被调用(开始)的,在不进行调用的情况下。

函数表达式会自动执行,假如表达式后面跟着 ()。

您无法对函数声明进行自调用。

您需要在函数周围添加括号,以指示它是一个函数表达式:

(function () {
    var x = "Hello!!";      //我会调用我自己
})();

上面的函数实际上是一个匿名的自调用函数(没有名称的函数)。

 

arguments

function test(a,b){
  consloe.log(test.length) 
  consloe.log(arguments.length) 
} 

test(1,2,3)
// 2 获取形参的长度 
// 3 获取实参的长度

 

function test(a,b){
      a=2;
      b=3;
  consloe.log(arguments[0]) 
  consloe.log(arguments[1]) 
} 

test(1,1,1)
// 2
// 3

test(1)
// 2
// undefined
实参没传值,为undefined;给undefined赋值还是undefined

 

正常来说,函数外部的;无法识别函数内部的变量;

反之,越里面的函数,越能识别出本函数内的变量,和外层的局部变量和全局变量。

函数内部没有声明的变量,可以看成是全局变量(除了函数内存在同名的声明变量)。

posted on 2020-12-29 11:01  sss大辉  阅读(211)  评论(0编辑  收藏  举报

导航