【问题标题】:String variable name to JSON字符串变量名到 JSON
【发布时间】:2012-11-29 11:35:46
【问题描述】:

我有两个这样的变量:

var test = {"1":"test","2":"test2"};
var isdefined = "test.1"

如何检查 isdefined 变量是否“未定义”?

谢谢!

【问题讨论】:

  • typeof isdefined === "undefined"
  • if(isdefined !== undefined)
  • @RabNawaz 在没有 typeof 的情况下看起来未定义并不是更好的方法。我们可以覆盖它。 var undefined = true;.
  • 如果您尝试测试名称为 test.1 的变量是否存在而不是 undefined,您将会遇到问题,因为变量名称之间不能有句点。
  • var isdefined = "test.1";。你为什么使用双引号?除此之外,test.1 会生成“意外数字异常”。也许你的意思是这个表达式:var undefined = test[1];

标签: jquery json string object undefined


【解决方案1】:

您是否要测试1 是否存在于test 中?在这种情况下,你可以这样做

test.hasOwnProperty('1')

【讨论】:

  • 不拆分字符串是否可行?
  • 可悲的是,在你的情况下没有。因为你发送的对象和属性都用'。'分隔
【解决方案2】:

您的问题的答案是“否”和“是”,

不,因为如果您的对象属性以数字开头或者它是一个数字,则您无法使用 objectName.12 访问它,这是您无法更改的规则,在您的情况下它是一个数字

另一方面,是的,如果你的对象定义正确你可以做到,请检查下面的代码块;

var test = {"1":"test","_2":"test2"};
var isdefined = "test._2";
alert(eval(isdefined)); // will return test2
alert(eval("test.1"));  // throws exception.

【讨论】:

    【解决方案3】:

    JavaScript undefined 计算结果为 false,因此您可以简单地这样做:

    if ( isdefined ) {
        // do stuff
    }
    

    【讨论】:

    • 请注意,如果是null0''false,它也将评估为false。如果这对您来说不是问题,这就是要走的路。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    相关资源
    最近更新 更多