您的位置:首页 > Web前端 > JavaScript

javascript函数声明与函数表达式

2016-09-16 11:30 176 查看

在谈论函数的声明与函数表达式之前,先看一下什么是变量提升。

javascript中有一个特别重要的机制就是变量提升,下面这段代码

console.log(a);

var a = 1;

实际上执行的是:

var a;

console.log(a);

a = 1;

可以看到变量a的定义被提前了。在看一下下面两个函数的定义:

function a(str)

{

  return str==="hello";

}

var b = function(str)

{

 return str==="hello";    

}

执行:

a("hello") //正确
function a(str)
{
  return str==="hello";
}

而执行:

b("hello");//错误

var b = function(str)
{
 return str==="hello";    
}

用函数声明创建的函数a可以在函数定义之前就进行调用;而用函数表达式创建的函数不能在b被赋值之前进行调用。原因就是javascript的函数提升机制(Javascript function hoisting)和运行时机(解析时/运行时)上的差异。

总结

       Javascript 中函数声明和函数表达式是存在区别的,函数声明在javascript解析时进行函数提升,因此在同一个作用域内,不管函数声明在哪里定义,该函数都可以进行调用。而函数表达式的值是在javascript运行时确定,并且在表达式赋值完成后,该函数才能调用。

       Javascript函数可以让javascript具有面向对象的一些特征,实现封装、继承等,也可以让代码得到复用。但是在运用javascript函数声明和函数表达式时一定要注意。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息