gpt4 book ai didi

Javascript 范围怪异、函数和浏览器

转载 作者:行者123 更新时间:2023-11-30 10:04:08 24 4
gpt4 key购买 nike

我认为这样做:

var what = function () {};

还有这个

function what () {}

在 JS 中也是一样,因为函数应该是“第一类对象”。

今天我在 Firefox 中了解到这段代码:

var test = true;
if (test) {
function what () {
alert("foo");
}
} else {
function what () {
alert("bar");
}
}
what();

display foo,出于奇怪的原因 chrome display bar... 为什么是 [第一]?这样做:

var test = true, what;

if (test) {
what = function() {
alert("foo");
}
} else {
what = function () {
alert("bar");
}
}
what();

解决了问题.. 为什么是[第二]?你可以试试http://jsfiddle.net/7cbs5gr7/这里

[摘要] 我有两个问题:

  1. 为什么 chrome 和 firefox 对此有不同的处理方式? -附加一个:哪个是对的? -
  2. 为什么在 var 中显式设置函数可以解决问题?

最佳答案

像这样声明一个函数

what = function () {
alert("foo");
}

function what () {
alert("foo");
}

是两个不同的东西。

在第一种情况下,变量被提升并且函数定义需要脚本执行通过 ifelse 中的那个点。在第二种情况下,函数刚刚声明,可以从任何地方访问,而不管 ifelse 中的条件如何。

关于Javascript 范围怪异、函数和浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30187422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com