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

 

posted on 2016-03-24 13:50  可乐不加冰Litb  阅读(154)  评论(0)    收藏  举报