在Ruby和JavaScript中测试未定义的变量?

时间:2009-05-20 16:29:35

标签: javascript ruby undefined

在JavaScript中,有一种有用的方法可以测试从未在任何给定点定义过的变量。例如,如果尚未定义变量 bob ,则以下代码段将返回 true

typeof(bob)=='undefined'

如何在Ruby中完成相同的测试?

编辑:我正在寻找一种同样紧凑的测试。我用异常等方法得出了一些尴尬的近似值,但那些不是很漂亮!

5 个答案:

答案 0 :(得分:43)

defined?(variable_name)

irb(main):004:0> defined?(foo)
=> nil
irb(main):005:0> foo = 1
=> 1
irb(main):006:0> defined?(foo)
=> "local-variable"

这是一个很好的write up

答案 1 :(得分:8)

defined?是一个函数,如果项目未定义,则返回nil。

defined? somevar
=> nil
somevar = 12
defined? somevar
=> "local-variable"

所以:

if defined?(somevar)
  do_something
end

答案 2 :(得分:3)

请记住定义的?如果定义了变量,则返回一个字符串;如果不是,则返回nil,因此对其结果使用条件检查。我认为语法暗示它会返回一个布尔值。

答案 3 :(得分:0)

所有用例:

RewriteEngine On
RewriteRule ^details/([^/]*)/([^/]*)\.html$ /details.php?id=$1&post=$2 [L] 

答案 4 :(得分:-1)

也可以这样测试。

   if somevar.nil
        # not set do something
    else
        # is set do something else
    end