javascript函数定义表达式与函数声明的区别
在javascript中,在定义使用一个函数的时候,通常有以下两种写法:
1)函数定义表达式
var out_put1 = function(str) {
console.log('Your string is ' + str);
}
2)函数声明
function out_put2(str) {
console.log('Your string is ' + str);
}
函数out_put1与out_put2的调用结果是一致的,但是两者的区别在于:
out_put1只能在函数体之后调用,而out_put2可以在函数体之前调用。
这是因为,javascript的函数作用域规定的,在函数定义表达式中,var声明了函数名的引用变量,该变量是javascript执行中,会放在开始的位置执行,但是函数体
仍在原来的位置,而函数声明,会将整个函数体移到开始的位置。 对JavaScript解释器而言,所有的函数和变量声明都会被提升到最前面, 并且变量声明永远在前面,
赋值在声明过程之后。比如:
var x = 10;
function x(){};
console.log(x); // 10
实际上被解释为:
var x;
function x(){};
x = 10;
console.log(x); // 10
浙公网安备 33010602011771号