zoukankan      html  css  js  c++  java
  • return语句必须要注意的地方

    先看下面程序:

    function foo1()
    {
      return { /*返回对象{}他留有一个大括号跟return在同一行*/
          bar: "hello"
      };
    }
    
    function foo2()
    {
      return 
      {     /*{}没在return同一行所以返回的是undefined*/ 
          bar: "hello"
      };
    }
    console.log("foo1 returns:");
    console.log(foo1());   //{ bar: 'hello' }
    console.log("foo2 returns:"); 
    console.log(foo2());   //undefined

    可以看到,foo1和foo2函数返回对象的开始的大括号一个和return在同一行,foo2不在同一行。

    于是,foo2()返回未定义,没有任何错误被抛出。

    原因:当foo2()的一行语句中只包含return时,会在return语句后面自动的加上一个分号。后面的语句也是合法的,不会抛出error,尽管它不会调用,也不做任何事(仅仅只是一个没有用到的语句块,它定义了一个等同于’hello’字符串的属性bar而已)。

    浏览器会自作主张的在return后面加一个分号。

    //foo3和上面的foo2是等价的
    function foo3()
    {
      return ; //主动加分号
      {     /*{}没在return同一行所以返回的是undefined*/ 
          bar: "hello"
      };
    }
    console.log(foo3());   //undefined

     所以建议,在JavaScript中将行开头的大括号放置在行尾的约定,而不是在新行的开头。

    来源:你必须知道的25道JavaScript核心面试题

    25道核心JavaScript面试题 https://www.toptal.com/javascript/interview-questions

  • 相关阅读:
    写了一个Rijndael工具类
    使用bcel动态创建class
    有感于大理古城的天主教堂
    joj 1089 &&zoj 1060&&poj 1094 以及wa的分析和数据
    joj1026
    joj 1317
    joj 1171
    joj 2343
    joj 1078 hdu 1116
    joj 1189
  • 原文地址:https://www.cnblogs.com/guorange/p/7218588.html
Copyright © 2011-2022 走看看