【问题标题】:TypeError: invalid 'in' operand objTypeError:无效的'in'操作数obj
【发布时间】:2017-05-12 03:52:46
【问题描述】:
       json= new Gson().toJson(name);

其中名称是字符串类型。

我收到错误消息“TypeError: invalid 'in' operand obj”

错误在java脚本的给定部分

 return type === "array" || type !== "function" &&
     ( length === 0 ||
     typeof length === "number" && length > 0 && ( length - 1 ) in obj );

我也试过了

   response=JSON.parse(response); 

这不起作用。

【问题讨论】:

  • 什么是responseJson
  • 我从 servlet 获得的响应对象
  • 对象类型的元素
  • 正如错误提示的那样,obj 似乎不是in 的有效操作数。

标签: javascript jquery


【解决方案1】:

通过链接In operator你可以看到

如果指定属性在指定对象中,则 in 运算符返回 true。

在您的代码( length - 1 ) in obj 中,您尝试检查该属性(length - 1) obj 中的那个数字

我认为objstring,所以它有length属性,但没有数字属性,所以你必须抓住这种情况

【讨论】:

  • 这是许多 servlet 的通用 java 脚本,我不能仅将其更改为数值
  • 那么你能提供什么是obj值吗?
  • 所以?如果您有var obj = {5: 'foo'};,那么5 in obj 将返回true。该错误表明obj 不是in 的有效操作数。
  • @FelixKling 你对我或 OP 的评论? :-)
  • @user2814799:另外,There is no such thing as a "JSON object"
【解决方案2】:

我在括号之间关闭了代码“(length - 1) in obj”。

return type === "array" || type !== "function" &&
     ( length === 0 ||
     typeof length === "number" && length > 0 && (( length - 1 ) in obj) );

这对我来说很好。

【讨论】:

    【解决方案3】:

    在我的情况下,对象不是空的,但我需要在对象的键上添加双引号,例如:

    obj = {params : "paramsInputPreData"}
    

    上面会产生错误,但下面的没问题:

    obj = {"params" : "paramsInputPreData"}
    

    所以对我来说,关键需要引用为“参数”

    希望对某人有所帮助

    【讨论】:

      【解决方案4】:

      当你有这个错误时,你需要检查你的变量的类型等等,你总是可以这样做:

      if (typeof x == 'string' || typeof x == 'number') { ... }
      

      【讨论】:

        猜你喜欢
        • 2015-09-08
        • 1970-01-01
        • 2014-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-08
        • 2015-11-19
        • 1970-01-01
        相关资源
        最近更新 更多