1

私は、javascript を使用して何らかの方法で継承を作成するプログラムを作成していました。

ユーザーが次のように入力した場合:

x.isSingleLine()

存在しない場合、Javascript がクラッシュします。私は次のようなことをする方法があることを望んでいました:

x.isSingleLine() || "Doesnt Exist";

ある意味で、ソフトエラーまたは何らかのアラートを実行するようにします。オブジェクトを try-catch ブロックにカプセル化する必要はありませんでした。

これを達成する方法はありますか?

ステートメント内: x.isSingleLine() || "存在しません"; クラッシュしてOR部分を実行しないため、これは明らかに答えではありません。

4

4 に答える 4

6

どのようにそのことについて?

  x.isSingleLine ? x.isSingleLine() : console.log("Doesnt Exist");

編集: @FelixKling が示唆するように、isSingleLine存在する可能性があるが、代わりに使用する必要がある関数ではない場合:

(x.isSingleLine && x.isSingleLine instanceof Function) ? x.isSingleLine() : console.log("Doesnt Exist");
于 2013-07-22T13:27:42.910 に答える
5

呼び出すに存在するかどうかを確認する必要があります。

var result = x.isSingleLine ? x.isSingleLine() : "Doesn't Exist";
于 2013-07-22T13:28:48.323 に答える
1

私が頭のてっぺんから知っている限り、そのために try-catch ブロックを使用できます。

try {
    x.isSingleLine();
} catch (e) {
    // Something happened
    alert("isSingleLine didn't quite work out.");
}

このフィドルでそれをいじってください

更新 try-catch ブロックにカプセル化したくないことに気付きました。ただし、try-catch ブロックを使用すると、更新された fiddleに示されているように、 isSingleLine() メソッド内でエラーを処理することもできます。

于 2013-07-22T13:27:03.060 に答える
0
(x.isSingleLine || function(){
    console.log("Doesn't Exist");
})()
于 2013-07-22T13:31:33.873 に答える