[JavaScript標準組み込みオブジェクト] - 関数プロパティ

簡単に言うと

グローバル関数は、それが属するオブジェクトを指定せずに直接呼び出すことができ、実行後に結果が呼び出し元に直接返されます。
グローバル組み込み関数は次のとおりです。

  • eval() : eval() 関数は、受信した文字列を JavaScript コードとして実行します。
  • isFinite() : グローバル isFinite() 関数は、渡されたパラメーター値が有限数であるかどうかを判断するために使用されます。必要に応じて、パラメータは最初に値に変換されます。
  • isNaN() : isNaN() 関数は、値が NaN かどうかを判断するために使用されます。
  • parseFloat() : parseFloat() 関数は引数を解析し (必要に応じて最初に文字列に変換します)、float を返します。
  • parseInt() : parseInt(string, radix) は文字列を解析し、指定された基数の 10 進整数を返します。基数は 2 ~ 36 の整数で、解析された文字列の基数を示します。
  • decodeURI() : decodeURI(): この関数は、encodeURI によって作成された、または他のプロセスによって取得された URI (Uniform Resource Identifier) をデコードできます。
  • decodeURIComponent() : decodeURIComponent() メソッドは、encodeURIComponent メソッドまたは他の同様のメソッドによってエンコードされた部分的な URI (Uniform Resource Identifier) をデコードするために使用されます。
  • encodeURI() : encodeURI() 関数は、特定の文字の各インスタンスを 1、2、3、または 4 つのエスケープ シーケンスで置き換えることによって、Uniform Resource Identifier (URI) をエンコードします (文字の UTF-8 エンコードは 4 つのエスケープ シーケンスのみです) ) 2 つの「サロゲート」文字で構成されます)。
  • encodeURIComponent() : encodeURIComponent() 関数は、特定の文字の各インスタンスを、その文字の UTF-8 エンコーディングを表す 1 つ、2 つ、3 つ、または 4 つのエスケープ シーケンスに置き換えることによって URI をエンコードします (2 つの「サロゲート」文字によってのみ指定され、次のようにエンコードされます)。 4 つのエスケープ シーケンス)。この関数は、URI 構文の一部を含め、encodeURI() よりも多くの文字をエンコードします。

評価

eval(string) 関数は、受信した文字列を JavaScript コードとして実行します。
構文
eval(文字列)

パラメーター (string ) は、JavaScript の式、ステートメント、または一連のステートメントを表す文字列です。式には、既存のオブジェクトの変数とプロパティを含めることができます。
戻り値: 文字列内のコードの戻り値を返します。戻り値が空の場合は、未定義を返します。

console.log(eval('2 + 2'));
// Expected output: 4

console.log(eval(new String('2 + 2')));
// Expected output: 2 + 2

console.log(eval('2 + 2') === eval('4'));
// Expected output: true

console.log(eval('2 + 2') === eval(new String('2 + 2')));
// Expected output: false

eval 関数は Web セキュリティの問題を引き起こすため、使用しないことをお勧めします。

有限である

グローバル isFinite() 関数は、渡されたパラメーター値が有限数であるかどうかを判断するために使用されます。必要に応じて、パラメータは最初に値に変換されます。
構文
isFinite(testValue)
パラメーター
testValue は、
有限性の値を検出するために使用されます。
この方法を使用すると、数値が有限かどうかを判断できます。isFinite メソッドは、引数の数値をチェックします。引数が NaN、正の無限大、または負の無限大の場合は false を返し、それ以外の場合は true を返します。

isFinite(Infinity);  // false
isFinite(NaN);       // false
isFinite(-Infinity); // false

isFinite(0);         // true
isFinite(2e64);      // true,在更强壮的 Number.isFinite(null) 中将会得到 false


isFinite("0");       // true,在更强壮的 Number.isFinite('0') 中将会得到 false

はNaN

isNaN() 関数は、値が NaN かどうかを判断するために使用されます。
構文
isNaN(value)
パラメーター
value は
、チェックされる値です。

戻り値 戻り
値は、指定された値が NaN の場合は true、それ以外の場合は false です。

注: isNaN() を実行すると、パラメータの値が値に変換されてから、NaN かどうかが判断されます。

isNaN(NaN);       // true
isNaN(undefined); // true
isNaN({
    
    });        // true

isNaN(true);      // false
isNaN(null);      // false
isNaN(37);        // false

// strings
isNaN("37");      // false: 可以被转换成数值 37
isNaN("37.37");   // false: 可以被转换成数值 37.37
isNaN("37,5");    // true
isNaN('123ABC');  // true:  parseInt("123ABC") 的结果是 123,但是 Number("123ABC") 结果是 NaN
isNaN("");        // false: 空字符串被转换成 0
isNaN(" ");       // false: 包含空格的字符串被转换成 0

// dates
isNaN(new Date());                // false
isNaN(new Date().toString());     // true

isNaN("blabla")   // true: "blabla"不能转换成数值
                  // 转换成数值失败,返回 NaN

isNaN() 関数の代わりに Number.isNaN() と x !== x を使用することをお勧めします。

プレスフロート

parseFloat() 関数は引数を解析し (必要に応じて最初に文字列に変換します)、float を返します。
構文
parseFloat(string)
パラメータ
文字列を
浮動小数点値に解析する必要があります。

戻り値 指定
された値は浮動小数点数として解析されます。指定された値を数値に変換できない場合は、NaN が返されます。

function circumference(r) {
    
    
  return parseFloat(r) * 2.0 * Math.PI;
}

console.log(circumference(4.567));
// Expected output: 28.695307297889173

console.log(circumference('4.567abcdefgh'));
// Expected output: 28.695307297889173

console.log(circumference('abcdefgh'));
// Expected output: NaN

parseFloat はグローバル関数であり、どのオブジェクトにも属しません。次のような特徴があります。

  • parseFloat がプラス記号 (+)、マイナス記号 (-U+002D HYPHEN-MINUS)、数値 (0 ~ 9)、小数点 (.)、または科学表記法の指数 (e または E ) に遭遇した場合、この文字と後続のすべての文字は無視され、現在解析されている浮動小数点数が返されます。
  • 2 番目の小数点が存在すると解析も停止します (それより前の文字は解析されます)。
  • パラメータの先頭と末尾の空白は無視されます。
  • parseFloat は、引数文字列の最初の文字を数値として解析できない場合、NaN を返します。
  • parseFloat は Infinity を解析して返すこともできます。
  • parseFloat は BigInt を Numbers に解析しますが、精度は失われます。最後の n 文字が破棄されるためです。
  • arseFloat は、toString または valueOf メソッドを定義したオブジェクトを変換することもできます。これは、そのメソッドの呼び出しの結果として parseFloat を呼び出した場合と同じ値を返します。
parseFloat(3.14);	//	3.14
parseFloat('3.14');	//	3.14
parseFloat('  3.14  ');	// 3.14
parseFloat('314e-2');	//	3.14
parseFloat('0.0314E+2');	//	3.14
parseFloat('3.14some non-digit characters');	//	3.14
parseFloat({
    
     toString: function() {
    
     return "3.14" } });	//	3.14

parseFloat("FF2"); 	//	NaN
parseFloat(900719925474099267n);	//	900719925474099300 精度丢失
parseFloat('900719925474099267n');	//	900719925474099300  精度丢失

parseInt

parseInt(string, radix) は文字列を解析し、指定された基数の 10 進整数を返します。基数は 2 ~ 36 の整数で、解析された文字列の基数を示します。
構文
parseInt(string, radix);解析する
パラメータ
文字列の値。
引数が文字列でない場合は、(ToString 抽象操作を使用して) 文字列に変換されます。文字列の先頭の空白は無視されます。

radix_Optional_
基数の基数を表す 2 ~ 36 の整数。たとえば、16 を指定すると、解析された値が 16 進数であることを示します。この範囲外の場合は NaN が返されます。0 を指定するか指定しない場合、基数は文字列の値から推測されます。外挿結果が常にデフォルト値の 10 になるわけではないことに注意してください。記事の最後の説明では、パラメータ基数が渡されていない場合のこの関数の具体的な動作について説明しています。
10 を超える基数の場合、英語の文字は 9 より大きい数値を表します。たとえば、16 進数 (基数 16) の場合は、A ~ F を使用します。

戻り値 指定
された文字列から解析された整数。

または NaN の場合

  • 基数が 2 未満または 36 より大きい、または
  • 最初のスペース以外の文字は数値に変換できません。

parseInt('123', 5) // '123' を 5 進数として扱い、10 進数 38 を返します => 1 5^2 + 2 5^1 +3*5^0 = 38

parseInt は、指定された radix パラメーターに数字ではない文字を検出した場合、その文字と後続のすべての文字を無視し、その時点までに解析された整数値を返します。parseInt は、数値を整数値に切り捨てます。先頭と末尾のスペースは許可されます。

一部の数値では文字列表現に e 文字が使用されるため (たとえば、6.022e23 の場合は 6.022×23)、非常に大きい数値または非常に小さい数値を使用する場合、parseInt を使用して数値を切り捨てると予期しない結果が生じます。parseInt は Math.floor() の代わりにすべきではありません。

parseInt は 2 つのシンボルを理解します。正の数値の場合は +、負の数値の場合は - (ECMAScript 1 以降)。これは、空白を削除した後の解析の最初のステップとして実行されます。シンボルが見つからない場合、アルゴリズムは次のステップに進み、見つからない場合はシンボルを削除し、文字列の残りの部分に対して数値解析を実行します。

基数が未定義、0、または指定されていない場合、JavaScript は次のように想定します。

  • 入力文字列が 0x または 0X (0 の後に小文字または大文字の X が続く) で始まる場合、基数は 16 とみなされ、文字列の残りの部分は 16 進数として解析されます。
  • 入力文字列が「0」(0)で始まる場合、基数は8(8進数)または10(10進数)とみなされます。どの基数を選択するかは実装に依存します。ECMAScript 5 では、10 (10 進数) を使用する必要があることが明確にされていますが、すべてのブラウザーがそれをサポートしているわけではありません。したがって、parseInt を使用する場合は、必ず基数を指定してください。
  • 入力文字列が他の値で始まる場合、基数は 10 (10 進数) になります。

最初の文字を数値に変換できない場合、parseInt は NaN を返します。

//	均返15
parseInt("0xF", 16);
parseInt("F", 16);
parseInt("17", 8);
parseInt(021, 8);
parseInt("015", 10);   // parseInt(015, 8); 返回 13
parseInt(15.99, 10);
parseInt("15,123", 10);
parseInt("FXX123", 16);
parseInt("1111", 2);
parseInt("15 * 3", 10);
parseInt("15e2", 10);
parseInt("15px", 10);
parseInt("12", 13);
//	NaN
parseInt("Hello", 8); // 根本就不是数值
parseInt("546", 2);   // 除了“0、1”外,其他数字都不是有效二进制数字

//	-15
parseInt("-F", 16);
parseInt("-0F", 16);
parseInt("-0XF", 16);
parseInt(-15.1, 10);
parseInt(" -17", 8);
parseInt(" -15", 10);
parseInt("-1111", 2);
parseInt("-15e1", 10);
parseInt("-12", 13);

//	4
parseInt(4.7, 10);
parseInt(4.7 * 1e22, 10); // 非常大的数值变成 4
parseInt(0.00000000000434, 10); // 非常小的数值变成 4

デコードURI

decodeURI() 関数は、encodeURI または他のプロセスによって作成された URI (Uniform Resource Identifier) をデコードします。
decodeURI() 関数と encodeURI() 関数は通常、一緒に使用され、単独で使用されることはほとんどありません。
構文
decodeURI(encodedURI)
パラメータ
encodedURI
完全なエンコードされた URI

戻り値 指定
されたエンコードされた URI (Uniform Resource Identifier) のエンコードされていないバージョンである新しい文字列を返します。
エンコードされた URI 内の認識されたすべてのエスケープ シーケンスを元の文字に変換しますが、encodeURI でエンコードされないエスケープ シーケンス (「#」など) はデコードしません。

decodeURI("https://developer.mozilla.org/ru/docs/JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B");
// "https://developer.mozilla.org/ru/docs/JavaScript_шеллы"

エンコードURI

encodeURI() 関数は、特定の文字の各インスタンスを 1、2、3、または 4 つのエスケープ シーケンス (文字の UTF-8 エンコードは 4 つのエスケープ シーケンスのみ) に置き換えることによって、Uniform Resource Identifier (URI) をエンコードします。 「代理」文字)。
構文
encodeURI(URI)
パラメータ
URI
完全な URI。
戻り値
URI (Uniform Resource Identifier) としてエンコードされた指定された文字列を表す新しい文字列。

URI が完全な URI であると仮定すると、予約されており、URI 内で特別な意味を持つ文字をエンコードする必要はありません。

// http://username:[email protected]:80/path/to/file.php?foo=316&bar=this+has+spaces#anchor
console.log(
  encodeURI(
    "http://username:[email protected]:80/path/to/file.php?foo=316&bar=this+has+spaces#anchor"
  )
);
//	%E5%93%88%E5%93%88%E5%93%88%20#anchor
console.log(encodeURI("哈哈哈 #anchor"));

encodeURI は、適切な UTF-8 エスケープ シーケンスがある場合でも、次の文字を除くすべての文字を置き換えます。

タイプ 含む
予約文字 ; 、/? : @ & = + $
エスケープされていない文字 英数字 - _ . ! ~ * ' ( )
番号記号 #

さらに、非高低完全サロゲート文字をエンコードしようとすると、次のような URIError がスローされます。

// 编码高 - 低位完整字符 ok
console.log(encodeURI('\uD800\uDFFF'));

// 编码单独的高位字符抛出 "Uncaught URIError: URI malformed"
console.log(encodeURI('\uD800'));

// 编码单独的低位字符抛出 "Uncaught URIError: URI malformed"
console.log(encodeURI('\uDFFF'));

デコードURIコンポーネント

decodeURIComponent() メソッドは、encodeURIComponent メソッドまたは他の同様のメソッドによってエンコードされた部分的な URI (Uniform Resource Identifier) をデコードするために使用されます。
エンコードされた URI 内の認識されたすべてのエスケープ シーケンスを生の文字に変換します。
decodeURIComponent は通常、encodeURIComponent と一緒に使用されます。
構文
decodeURIComponent(encodedURI)
パラメータ
encodedURI
エンコードされた部分 URI

戻り値
指定された形式でエンコードされた URI を処理する前の、デコードされた URI (Uniform Resource Identifier) 文字列。

decodeURIComponent("JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B");
// "JavaScript_шеллы"
console.log(decodeURIComponent("JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B"));
console.log(decodeURI("JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B"));

encodeURIコンポーネント

encodeURIComponent() 関数は、特定の文字の各インスタンスを、その文字の UTF-8 エンコードを表す 1 つ、2 つ、3 つ、または 4 つのエスケープ シーケンスに置き換えることによって URI をエンコードします (2 つの「サロゲート」文字で構成される文字のみが次のようにエンコードされます)。 4 つのエスケープ シーケンス)。この関数は、URI 構文の一部を含め、encodeURI() よりも多くの文字をエンコードします。
構文
encodeURIComponent(str);
パラメータ
str
文字列、数値、ブール値、null、未定義、または任意のオブジェクト。str パラメータは、エンコード前に文字列に変換されます。

戻り値
元の文字列は、URI の一部として新しい文字列としてエンコードされます。
encodeURIComponent は、次の場合を除くすべての文字をエスケープします。

エスケープされていない文字:
AZ az 0-9 - _ . ! ~ * ' ( )

var set1 = ";,/?:@&=+$";  // 保留字符
var set2 = "-_.!~*'()";   // 不转义字符
var set3 = "#";           // 数字标志
var set4 = "ABC abc 123"; // 字母数字字符和空格

console.log(encodeURI(set1)); // ;,/?:@&=+$
console.log(encodeURI(set2)); // -_.!~*'()
console.log(encodeURI(set3)); // #
console.log(encodeURI(set4)); // ABC%20abc%20123 (空格被编码为 %20)

console.log(encodeURIComponent(set1)); // %3B%2C%2F%3F%3A%40%26%3D%2B%24
console.log(encodeURIComponent(set2)); // -_.!~*'()
console.log(encodeURIComponent(set3)); // %23
console.log(encodeURIComponent(set4)); // ABC%20abc%20123 (空格被编码为 %20)

エピローグ

終わりました

おすすめ

転載: blog.csdn.net/qq_43231248/article/details/131597958