0

私は次のコードを持っています:

    if ($selectInput.data('propagate-title') === 'yes') {
        var m = this.id.match(/^modal_TempRowKey_(\d+)$/);
        if (m) {
            $("#modal_Title_" + m[1]).val(title);
        }
    }

誰かが返され、mに入れられるものを説明できますか?コードを次のように変更して、同じように機能させることはできますか?

    if ($selectInput.data('propagate-title') === 'yes') {
        var m = this.id.match(/^modal_TempRowKey_(\d+)$/)[1];
        if (m) {
            $("#modal_Title_" + m).val(title);
        }
    }
4

2 に答える 2

4

2 つのコード フラグメントには重要な違いがあります。null一致するものがない場合は、操作から返され、match評価の結果が返されるため、希望する変更を行うことはできません。

null[1]

次のようなエラーがスローされます

TypeError: Cannot read property '1' of null

正規表現が一致する場合、または一致しない場合、の戻り値matchは配列ですnull。返された配列の要素 0 は一致全体であり、要素 1 は最初の で始まる括弧ペア内の一致(です。最初のコード フラグメントでは、値m[1]は に続く数字シーケンス"modal_TempRowKey_"です。

編集:すべての詳細については、元の質問へのコメントでカイルが提供するリンクを参照してください。

于 2012-09-26T04:17:56.680 に答える
1

ここでは、マッチ方法の説明です。 一致を含む配列、一致ごとに 1 つの項目、または一致が見つからない場合は null

id は正規表現と一致し、配列または null を返し、返された配列は m に割り当てられます。したがって、m 1は最初のコードで使用されます。

id が正規表現と一致すると、配列が返され、配列1が m に割り当てられます。したがって、m は 2 番目のコードで使用されます。

ID が大文字と小文字を区別しない場合、2 番目のコードでは null または未定義の例外が発生しますが、最初は発生しません。

于 2012-09-26T04:21:44.783 に答える