1

私はどこかで立ち往生しています(初心者がそうであるように)。変数をトリムして内容をテストしたら、変数を再定義しても問題ありませんか?

    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 = "";     
            }
4

3 に答える 3

4

var同じスコープ内の同じ変数に対して複数回使用しても意味がありません。すべてvar x;がスコープの一番上に引き上げられるため、varその変数のすべての追加はノーオペレーションになります。

ただし、新しい値を割り当てることは問題ありません。それらは変数であり、結局のところ定数ではありません。

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

これは実際には内部的に次のとおりです。

function x() {
    var x, y; // both are === undefined
    x = 123;
    foo();
    x = 456;
    y = 'hello';
    x = 678;
}
于 2012-05-30T18:20:37.157 に答える
1

はい、これを行うことができ、合法です。

于 2012-05-30T18:18:56.760 に答える
0

「うまくいく」かもしれませんが、お勧めしません。再宣言する必要はありません。

おそらくJSLintを介してコードを実行したいでしょう。対処したい整頓/ブレースの問題がいくつかあります。

于 2012-05-30T18:23:35.597 に答える