labman
labman

Reputation: 59

javascript re-define a variable

I'm getting stuck somewhere (as newbies do). Is it ok to re-define a variable once it has been trimmed and tested for content?

    function setarea() {

        var dbasedata = document.forms[0]._dbase_name.value;
            dbasedata = dbasedata.toUpperCase();
            dbasedata = dbasedata.replace(/\s/g, "");
            dbasedata = dbasedata.remove("UK_CONTACTS", "");

        if (dbasedata != "") {
            _area.value = _dbase_name.value;
        } 

   else var dbasedata = document.forms[0]._dbase_name.value;
            dbasedata = dbasedata.toUpperCase();
            dbasedata = dbasedata.replace(/\s/g, "");

        if (dbasedata.indexOf("UK_CONTACTS")>-1 {
        var dbaseterm = "UK_CONTACTS";
   else var dbaseterm = "";     
            }

Upvotes: 1

Views: 101

Answers (3)

JMC
JMC

Reputation: 930

It may 'work', but isn't recommended. You don't need to redeclare it.

Probably want to run your code through JSLint . There are a few tidyness/bracing issues you would want to address.

Upvotes: 0

ThiefMaster
ThiefMaster

Reputation: 318478

It makes no sense to use var more than once for the same variable in the same scope. Since all var x; are hoisted to the top of the scope every additional var on that variable will be a no-op.

Assigning a new value is fine though - they are variables and not constants after all.

function x() {
    var x = 123;
    foo();
    x = 456;
    var y = 'hello';
    var x = 678;
}

is actually this internally:

function x() {
    var x, y; // both are === undefined
    x = 123;
    foo();
    x = 456;
    y = 'hello';
    x = 678;
}

Upvotes: 4

Wouter J
Wouter J

Reputation: 41934

Yes, you can do this and it is legal.

Upvotes: 1

Related Questions