javascript function的浅析理解

一、javascript里面定义函数的方法

1、函数声明

function ftn(){

    代码块;

}

2、函数表达式

var ftn=function(){

  代码块;

}

3、 使用Function构造函数(不推荐使用)

var sum =  new Function("a","b","return a+b");


二、声明提升
经过上面的知识,我们已经了解javascript中函数的基本写法,下面先抛问题。


      (1) ftn();//"Uncaught TypeError: undefined is not a function"
           var ftn=function(){
               console.log("报错,不打印喽。");
            }   

      (2) ftn();
            function ftn(){
                console.log("函数声明提升");
            }

(1)在调用ftn()函数时会报错,"Uncaught TypeError: undefined is not a function",
(2)在执行中不会报错,
其原因:(1)函数表达式(var ftn = function(){}):这个会产生运行错误,原因在于函数位于一个初始化语句中,而不是一个函数声明,换句话说,在执行到函数所在语句之前,变量ftn不会保存对函数引用。

(2)函数声明(function ftn(){}):代码执行之前,解析器就已经读取函数声明并将其添加到执行环境中。

理解二、声明提升
      console.log(n);
        var n=100;    // var n; n=100;声明提升
打印结果:"undefined"    /javaScript/html/声明提升.html (7);
   var n=100;
       console.log(n);
打印结果:"100"    /javaScript/html/声明提升.html (11);
//            ftn();
//            function ftn(){
//                console.log("函数声明提升");
//            }
            
//            ftn();//"Uncaught TypeError: undefined is not a function"
//            var ftn=function(){
//                console.log("报错,不打印喽。");
//            }        //必须要在函数后面执行ftn();

var相当于提高了声明,var ftn;相当于先提高了声明,其后的function(){},就相当于,n=100,的赋值过程。所以var ftn=function(){},在其前面调用时,报错 undefined is not a function








posted @ 2017-03-31 11:09  breathfish  阅读(101)  评论(0编辑  收藏  举报