javascript - php和javascript如何执行嵌套函数的区别

标签 javascript php function nested-function

我正在尝试可视化 javascript 和 php 如何处理嵌套函数。

重点是:

php:

b(); //CANNOT call b at this point because isn't defined yet
a(); //CAN call a at this point because the interpreter see the declar
b(); //ok now i can call b, because the interpreter see the declaration after a execution
function a(){
    function b(){
        echo "inner";
    }
}

同时在 javascript 中:

b(); //CANNOT call b isn't defined yet
a(); //CAN call a at this point because the interpreter see the declar

function a(){
    function b(){
        console.log("inner");
    }
}
a(); //ok now i can call a because is defined
b(); // **CANNOT** call b yet !!   

为什么在 javascript 中我不能调用 b() 即使 a 被执行了? PHP 在哪些方面有所不同?

提前致谢!

最佳答案

这是一个范围的事情。您可以轻松地 - 在 javascript 中 - 编写“var b = function()”。 “b”只是在函数 a 的范围内定义的函数类型的变量。在 PHP 中,“a”和“b”都是全局函数,但是定义“b”是函数“a”的工作,因此直到调用“a”时才会定义它。考虑这个例子...

function a($x) {
    if ($x) {
        function b() { echo "x not empty"; }
    } else {
        function b() { echo "x empty"; }
    }
}
a(1);    // Defines function b
b();     // x not empty
a(0);    // PHP Fatal error:  Cannot redeclare b() (previously declared...

从重新定义“b”的失败中可以看出,“b”是一个真实的、全局作用域的函数。函数“a”可以使用各种标准来定义在不同运行中用于特定目的的函数。显然,在这种情况下,在函数“a”决定如何定义它之前调用函数“b”是没有意义的。

顺便说一句,我不认为上面的例子是很好的编码实践,但它确实说明了这一点。

与您的 javascript 代码最相似的 PHP 代码是:

function a() {
    $b = function() {
            echo "'b' says inner";
         };
    $b();    // Demonstrating the function can be used inside "a"
}
a();    // 'b' says inner

$b是一个函数类型的变量,只能在函数“a”中使用。

关于javascript - php和javascript如何执行嵌套函数的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56741319/

相关文章:

javascript - 单击菜单时取消选择标记

javascript - 如何将 json 对象作为状态转换的一部分发送到 Angular js 中的另一个 Controller

c++ - Visual Studio 2013 c++ 函数语法错误

php - 在 PHP 中崛起

javascript - 基于下拉选择的调用函数

c - 如何使用Goto功能

javascript - 什么是 ngModel.$validators 管道?

javascript - 如何从不同的输入获取所有选定的值 - Javascript

PHP - 验证程序是否正在运行

php - ImageMagick - 将多页 PDF 转换为一张图像