3

文字列を返す関数があり、関数を数回呼び出して結果を変数に入れる必要があります。

私はこれを持っています:

function GetValue() {
    ... Do Something ...
    console.log(string); // displays 'string'
    return string;
}

そして、関数の出力を別の関数の変数に代入しようとしています。現在、私はこれをやっています:

var theString = GetValue();
console.log(theString); // displays 'undefined'

私が理解していないのは、関数のコンソール出力が値を表示していることですが、変数を関数の出力に割り当てた後ではありません。

明らかに、これは関数の出力を変数に割り当てる方法ではありません。では、どうすればいいですか?

[追加情報]

どうやら、サンプル コードを簡潔にしようとして、混乱を招くだけだったようです。

以下は、javascript ファイルの他の場所から数回呼び出す必要がある完全な関数です。

/*
* Build URL link
*/
function BuildUrlTargetFolder() {
    // Get the current url and remove the 'zipCodes/branchAdmin' part of it for the branch url link
    var urlArray = window.location.href.split('/'),
    targetLength = urlArray.length - 3,
    i,
    targetFolder = '';

    for (i = 0; i < targetLength; i++) {
        // Only add a slash after the 'http:' element of the array
        if (i === 0) {
            targetFolder += urlArray[i];
        } else {
            targetFolder += '/' + urlArray[i];
        }
    }

    console.log('targetFolder: ' + targetFolder); // console output is the current url minus two "levels"

    return targetFolder;
}

関数を使用する必要がある場所の 1 つを次に示します。

var targetFolder = BuildUrlTargetFolder();

console.log('targetFolder: ' . targetFolder); // console output: "undefined"

// If the url has a value, set the href attribute for the branch link otherwise hide the url
if (data['url'] !== '') {
    $('a#branchLink').attr('href', targetFolder + '/index.php/coverage-area/' + data['url']).show();
} else {
    $('a#branchLink').attr('href', '#').hide();
}

そうは言っても、呼び出しコードの変数に割り当てられた関数から文字列を取得するにはどうすればよいでしょうか?

4

1 に答える 1

3

問題は次の行です。

console.log('targetFolder: ' . targetFolder); // console output: "undefined"

.である必要があり+ます。

書かれているように、あなたのコードはこれを行うことと同等です:

console.log('targetFolder'.targetFolder);

targetFolderつまり、未定義の文字列 'targetFolder' (Stringインスタンスに強制)のプロパティに評価されます。

于 2013-02-06T00:29:15.333 に答える