¿Qué hay de malo en definir variables de JavaScript dentro de los bloques if?

Tengo un código como este:

if (condition) {
var variable = blah;
}

if (differentcondition) {
var variable = blah;
}

¿Es esto correcto?

Asumo que la variable no se asignaría si la condición no se vuelve verdadera.

JSLint sigue diciéndome, variable ya definida.

¿Estoy haciendo esto mal?

Gracias.

OK, aquí está mi caso de uso real, estoy haciendo una delegación de eventos como esta:

$("#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
    }

});

En realidad estas 2 clases no son mutuamente excluyentes.

Esto funciona para mí, pero ¿es correcto?

Las respuestas fueron muy informativas, pero todavía no entiendo cómo debo configurar las variables aquí.

En realidad, también quiero decir que ciertas condiciones son mutuamente excluyentes, y ciertas condiciones no lo son.

¿Cómo debo estructurar esto?

Probablemente debería haber usado este ejemplo desde el principio.

Respuestas a la pregunta(5)

Su respuesta a la pregunta