JHCan333
2017-01-16 03:28
采纳率: 79.5%
浏览 2.9k
已采纳

判断一个变量是否存在,下面的情况怎么做?

我需要判断一个变量是否存在,现在有一个变化的id,我需要用id来拼这个变量,比如eval("abc" + id +"def");但是这个变量有的存在,有的没有定义,需要我判断一下是否存在,当我这样简单测试时if("undefined" != typeof(abcfristdef)){};可以走,但是当这样写时if("undefined" != typeof(eval("abc" + id +"def"))){};就会报not defined的错,本人小白,刚入行不久,请大手指教;

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • little_how 2017-01-16 03:35
    已采纳

    你那样做稍微复杂了一点;
    如果变量不是局部的,那么可以用window来判断,都不需要eval函数;
    给你举个例子:
    var adc123def = 'littlehow';
    console.log(window['abc123def']);//littlehow
    如果判断一个判断是否存在,那么就可以
    if(window['abc' + id + 'def'] === undefined) {
    //你变量不存在的业务逻辑
    }

    如果有帮助,希望采纳,有疑问可以继续提问....

    点赞 打赏 评论
  • Rover丿cxy 2017-01-16 03:27

    你可以直接判断id是不是undefined 然后再拼接

    点赞 打赏 评论
  • ahaqzylx3_4 2017-01-16 03:35

    id给个默认,再判断,多debug

    点赞 打赏 评论
  • JHCan333 2017-01-16 03:35

    朋友,id是一直都有的,但是拼接的那个变量不一定存在

    点赞 打赏 评论
  • Book1346 2017-01-16 03:39

    if("undefined" != typeof(abcfristdef)){};
    上面这句的判断当然没问题,表达式正确,判断,返回判断结果
    if("undefined" != typeof(eval("abc" + id +"def"))){};
    第二个语句,因为你真正要判断的是id这个变量,你先进行拼接,再判断,当然出错
    因为id可能不存在,那么你怎么先进行拼接?
    这里提示说not defined的错,并不是不能判断的错,而是你拼接过程中,没找到id这个变量进行拼接的错。
    所以最好是先判断id,有这个变量再进行拼接,

    点赞 打赏 评论
  • 好久不见1103 2017-01-16 04:09

    你可以加个静态的boolean 在你要使用的方法中改变boolean的值。比如。要用到那个变量时boolean改成true,不用改成false.再判断boolean的值就信了

    点赞 打赏 评论

相关推荐 更多相似问题