javascript - 为什么 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 上。
解决方案
是的,它确实!
相同的 Javascript 代码在不同的浏览器中表现不同。考虑以下代码:
<script>
alert('\v supported ' + (String.fromCharCode(11)== '\v'));
</script>
Output:
IE: false
FF: true
Opera: true
Safari: true
这背后的原因是每个浏览器都有自己的渲染引擎。这些是浏览器引擎的示例。这些引擎只不过是对开放 Web 标准的不同改编
推荐阅读
- javascript - JQuery-steps 动态地将步骤添加到表单并将所有对象传递给控制器
- python - 日期时间将语言从英语更改为乌克兰语 python?
- parsing - 如何使用纯函数式编程在 ocaml 中制作非上下文解析器?
- javascript - 未捕获的 DOMException:无法构造“Worker”:papaparse.mi.js 处的脚本
- docker - 无法在 docker 容器中运行 pytests
- blockly - 解决这个 Google Blockly 迷宫
- webpack - TypeError:无法在使用 ReactDOM 的 Jest 测试中读取未定义的属性“渲染”
- ruby-on-rails - 为什么我的 Heroku 应用程序只有在 Rails 服务器在本地运行时才能工作?
- python - 通过 python 3.7.3 使用 openCV 截取一个区域
- python-3.x - discord.py 处理多个异常