zoukankan      html  css  js  c++  java
  • javascript的函数定义的区别

          javascript中函数定义通常有两种方法:

          1. 普通的函数定义:

    function f1 (){}

      2. 变量式函数定义:

    var f2 = function(){}

         还有一种定义方法是new Function,由于这种方法并不常用,这里就不做解释了。

         那这两种定义方法有什么不同呢?难道仅仅只是样子不同而已嘛?当然不是这样,我们来看个具体的例子吧,大家觉得以下代码的执行结果是什么?

    if (1 === 1) {
    tellAlert();
    } else{
    function tellAlert(){
    alert('hello');
    }
    }

         执行结果是:会提示“hello”
         那接下来这段代码呢?

    if (1 === 1) {
    tellAlert();
    } else{
    var tellAlert = function (){
    alert('hello');
    }
    }

         执行结果是:游览器不会提示“hello”,chrome中的控制台还会报错:

        

        从上例中,我们可以明显看出,两者很大的不同就是执行顺序不同,这是function语句在解析时会发生被提升的情况。也就是说不管function被放置在哪里,它都会被移动到被定义时所在作用域的顶层。这样的后果就是放宽了函数必须先声明后使用的要求。

       《javascript语言精粹》中推荐使用的方法是 var f1 = function()。这样能明确表示f1 是一个包含一个函数值的变量。

         而nodejs的源码中,定义函数的方法是function f1()。

         个人感觉,在控制自己的代码逻辑的基础上,直接用function f1()会更好点,代码会更清楚点。


    ·

  • 相关阅读:
    [SDOI2011] 消防 (树的直径,尺取法)
    [HNOI2006]公路修建问题 (二分答案,并查集)
    P1875 佳佳的魔法药水 (最短路,DP)
    [SCOI2016] 背单词 (Trie 树,贪心)
    [USACO08DEC] 秘密消息Secret Message (Trie树)
    [HDU4745] Two Rabbits (区间DP)
    [HDU4362] Palindrome subsequence (区间DP)
    评价手心输入法
    软件工程个人作业12
    第12周进度条
  • 原文地址:https://www.cnblogs.com/lengyuhong/p/2370687.html
Copyright © 2011-2022 走看看