gpt4 book ai didi

javascript - 在 if block 中定义 JavaScript 变量有什么问题?

转载 作者:可可西里 更新时间:2023-11-01 01:55:14 26 4
gpt4 key购买 nike

我有这样的代码:

if (condition) {
var variable = blah;
}

if (differentcondition) {
var variable = blah;
}

这是正确的吗?

我假设如果条件不返回 true,则不会分配变量。

JSLint 不断告诉我,变量已经定义。

我做错了吗?

谢谢。

好的,这是我的实际用例,我正在做这样的事件委托(delegate):

$("#container").click(function (event){ 

if ($(event.target).is('img.class1')) {
var imagesrc = $(event.target).attr('src');
// Do something with imagesrc
}

if ($(event.target).is('img.class2')) {
var imagesrc = $(event.target).attr('src');
// Do something with imagesrc
}

// This condition is mutually exclusive to the above 2
if ($(event.target).is('img.class3')) {
var imagesrc = $(event.target).attr('src');
// Do something with imagesrc
}

// This condition is mutually exclusive to 1 and 2 but not to 3
if ($(event.target).is('img.class4')) {
var imagesrc = $(event.target).attr('src');
// Do something with imagesrc
}

});

实际上这两个类并不相互排斥。

这对我有用,但它正确吗?

答案非常有用,但我仍然不明白应该如何在此处设置变量。

其实我也想说,有些条件是互斥的,有些条件不是。

我应该如何构建它?

我可能应该从一开始就使用这个例子。

最佳答案

因为 javascript 有一个叫做“提升”的东西,它会让你的代码做一些看起来不应该做的事情。基本上,这意味着 javascript 解释器会将所有 var 声明移动到函数体的顶部,无论它们在函数体中的什么位置。然后它将所有函数定义移动到顶部,就在所有变量的下面。然后它将完成函数的编译。

将 var 放在 if 语句中并不违反语言的“规则”,但这意味着,由于 var 提升,无论 if 语句的条件是否满足,都会定义 var。

还请记住,提升不包括赋值,因此正如其他人指出的那样,var 声明将移至顶部,并且在稍后赋值之前保持未定义状态。

这是一个在当时看来一定是个好主意的功能示例,但事实证明它更令人困惑而不是有用。

关于javascript - 在 if block 中定义 JavaScript 变量有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1162561/

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