代码之家  ›  专栏  ›  技术社区  ›  Jaydeep Bobade

在javascript类中声明公共方法时出现语法错误

  •  1
  • Jaydeep Bobade  · 技术社区  · 6 年前

    我用javascript编写了一个类。当我试图将方法声明为公共方法时,它会给出语法错误。我提供两种情况,唯一的区别是进入。

    第一种情况显示语法错误:

    var myclass=(function(){ 
    
    function takeResponse(){.....}
    .
    .
    .
    function takeResponse(){.....}
          return  
          {
                takeResponse: takeResponse, 
                takeResponse_1: takeResponse_1, 
                takeResponse_2: takeResponse_2,
                takeResponse_3: takeResponse_3
          };
    })();
    

    第二种情况没有语法错误:

    var TestUtils=(function(){
    
    function takeResponse(URL)
    {
        var Response=new Promise(function(resolve,reject){
            $.ajax({
                url: URL,
                type: "GET",
                dataType: "json",
                success: function(result){
                    resolve(result);
                }
            });
        });
        return Response;
    }
    
    function takeResponse_1(URL,Data)
    {
        var Response=new Promise(function(resolve,reject){
            $.ajax({
                url:URL,
                type: "POST",
                dataType: "json",
                data: JSON.stringify(Data),
                contentType: "application/json",
                success: function(result){          
                    resolve(result);
                }
            });
        });
        return Response;
    }
    
    function takeResponse_2(URL,Data)
    {
        var Response=new Promise(function(resolve,reject){
            var res = $.ajax({
                url: URL,
                type: "PUT",
                dataType: "json",
                data: JSON.stringify(Data),
                contentType: "application/json",
                async: false
            }).responseText;
            console.log("======"+res);
            resolve(res);
        });
        return Response;
    }
    
    function takeResponse_3(URL)
    {
        var Response=new Promise(function(resolve,reject){
            var res = $.ajax({
                url: URL,
                type: "DELETE",
                dataType: "json",
                contentType: "application/json",
                async: false
            }).responseText;
            console.log("======"+res);
            resolve(res);
        });
        return Response;
    }
    return  {
        takeResponse: takeResponse, 
        takeResponse_1: takeResponse_1, 
        takeResponse_2: takeResponse_2,
        takeResponse_3: takeResponse_3
    };
    })();
    

    我不明白为什么在第一种情况下会显示错误。 有人能告诉我这两种密码的区别吗?? 提前谢谢

    1 回复  |  直到 6 年前
        1
  •  3
  •   supra28    6 年前

    这是因为javascript假定返回是在一行中完成的,并附加 ; 之后

     return ; 
          {
                takeResponse: takeResponse, 
                takeResponse_1: takeResponse_1, 
                takeResponse_2: takeResponse_2,
                takeResponse_3: takeResponse_3
          };
    

    这种行为称为自动分号插入, 了解它 here