首页 > 解决方案 > 为什么 Javascript 函数在 Chrome 77.0.3865.120 和 Safari 13.0.2 上的行为不同?

问题描述

我注意到 Safari 和 Chrome 上的功能表现不同,有什么原因吗?

我不需要解决方案,我只是想了解为什么会发生这种情况以及它是错误还是其他。这是重现它的方法。您会在 Chrome 的控制台和 Safari 的控制台中看到不同的值。

    const foo = 10;
    {

        const foo = 50;

        function logFoo1(){
            console.log(foo)
        }

        const logFoo2 = function(){
            console.log(foo)
        }

        logFoo1();
        logFoo2();

    }

在 safari 上 logFoo1() 将提示 10,在 Chrome 50 上。

标签: javascriptgoogle-chromesafari

解决方案


是的,它确实!

相同的 Javascript 代码在不同的浏览器中表现不同。考虑以下代码:

<script>

alert('\v supported ' + (String.fromCharCode(11)== '\v'));

</script>

Output:

IE: false

FF: true

Opera: true

Safari: true

这背后的原因是每个浏览器都有自己的渲染引擎。这些是浏览器引擎的示例。这些引擎只不过是对开放 Web 标准的不同改编


推荐阅读