php使用try的时候,前面不定义变量怎么不报错呢?

<?php
       try{
            $result = '正确';
        }catch (\Exception $e) {
            echo $e->getMessage();
        }
echo $result
?>

为何这样写,不报错,$result好像没在try的作用域里面定义啊?
感觉应该这样写才对。

<?php
        $result = '';
       try{
            $result = '正确';
        }catch (\Exception $e) {
            echo $e->getMessage();
        }
echo $result
?>
阅读 1.6k
2 个回答

PHP就是这么灵活。

看官网文档下的第一个评论:PHP变量范围

Note that unlike Java and C++, variables declared inside blocks such as loops or if's, will also be recognized and accessible outside of the block, so:
<?php
for($j=0; $j<3; $j++)
{
     if($j == 1)
        $a = 4;
}
echo $a;
?>

Would print 4.

try的作用域?
谁说的这里有作用域啊!
不是见到大括号就能说是作用域的!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题