javascript函数声明与函数表达式

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

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函数声明和函数表达式时一定要注意。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值