zoukankan      html  css  js  c++  java
  • 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








  • 相关阅读:
    51 Nod 1086 多重背包问题(单调队列优化)
    51 Nod 1086 多重背包问题(二进制优化)
    51 Nod 1085 01背包问题
    poj 2559 Largest Rectangle(单调栈)
    51 Nod 1089 最长回文子串(Manacher算法)
    51 Nod N的阶乘的长度 (斯特林近似)
    51 Nod 1134 最长递增子序列(经典问题回顾)
    51 Nod 1020 逆序排列
    PCA-主成分分析(Principal components analysis)
    Python中cPickle
  • 原文地址:https://www.cnblogs.com/breathfish/p/6650256.html
Copyright © 2011-2022 走看看