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

  • 相关阅读:
    session的一个问题
    (Struts)ActionForm类及表单数据验证
    javaee添加验证码
    struts的上传和下载
    logic标签用法
    jstl标签用法
    bean标签
    /WEB-INF/userManage.jsp(31,82) Unterminated ${ tag
    自定义EL
    jstl
  • 原文地址:https://www.cnblogs.com/guorange/p/7218588.html
Copyright © 2011-2022 走看看