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函数声明和函数表达式时一定要注意。
相关文章推荐
- JavaScript函数表达式与函数声明的区别
- javascript函数声明和函数表达式的区别
- javascript函数声明和函数表达式区别分析
- javascript函数声明与函数表达式的区别:函数声明提升
- javascript函数定义表达式和函数声明的区别
- Javascript函数声明与函数表达式
- Javascript函数声明和函数表达式
- javascript函数声明和函数表达式
- 【js】JavaScript函数,函数声明与函数表达式
- JAVASCRIPT函数定义表达式和函数声明的区别
- JavaScript函数声明和函数表达式
- javascript函数声明和函数表达式的区别
- javascript函数声明和函数表达式区别分析
- Javascript函数声明与函数表达式的区别
- Javascript函数声明与函数表达式的区别
- 一个讨论引发关于js中函数声明,函数表达式,形参与变量声明赋值引发的一些事
- Javascript的 函数声明 和函数表达式
- javascript,函数声明和函数表达式
- JavaScript细微差别(函数声明与函数表达式及浏览器差异)
- javascrip 函数声明和函数表达式