1

以下のtest(3行目)という名前の関数の使用に興味があります。

var pattern = /[1-9][1-9]{5}/;
var str = 'this is 248760!';
alert(pattern.test(str));

このスクリプトを本で見ましたが、関数の定義はありませんtest(str)

trueエラーを出す代わりにアラートを出すのはなぜですか?

4

2 に答える 2

3

pattern変数は実際には正規表現オブジェクトであり(/前後の文字のため)、正規表現にはJavaScriptの一部として組み込まれたメンバー関数がtest(...)あります。

于 2012-10-10T02:59:13.960 に答える
3

pattern正規表現オブジェクトです

/[1-9][1-9]{5}/.test("foo"); // valid javascript

正規表現オブジェクトは、などの多くのメンバー関数を提供しtest(...)ます toString()

/[1-9][1-9]{5}/.toString(); // "/[1-9][1-9]{5}/"

最初と最後の/'は、次の略記のようなものです。

new RegExp("[1-9][1-9]{5}"); // /[1-9][1-9]{5}/
于 2012-10-10T02:59:18.940 に答える