Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScript:%演算子が文字列で機能するのはなぜですか? -(型強制)


ここに、驚くべき結果を生成するコードスニペットがあるとします。まず、モジュロ演算子が文字列でも正常に機能していることがわかります(驚くべきことに)。次に、2つの文字列を連結すると、厄介な結果が生じます。

JavaScriptがなぜそうするのかを説明する必要がありますか?

これが問題コードです-

const numStr = '127';
const result = numStr % 5;
const firstName = 'Armaan';
const lastName = 'Malik';
const fullName = firstName + + lastName;
console.log('modulo result: ', result);
console.log('full name: ', fullName);

出力

modulo result: 2
full name: ArmaanNaN

コードに飛び込む前に、まずJavaScript→型強制の最も基本的なトピックの1つについて少し学びましょう。

型強制

基本的に、型強制は、JavaScriptコンパイラーが1つのデータ型を別のデータ型に変更するために使用する方法です。有効な型強制の例としては、文字列をブール値に、数値を文字列に変更するなどがあります。

型強制は非常に広大なトピックであり、このソリューションの長さを制限するために、このコードスニペットで使用されているもののみを調査します。 2種類の型強制のうち、コンパイラによって自動的に実行されるものは、暗黙的な型強制と呼ばれます。

次のように-

すべてのデータ型(プリミティブまたは非プリミティブ)は暗黙的に-

に強制変換されます
  • 文字列(二項+演算子とともに使用する場合)。

  • 数値(+、-、/、*、%などの算術演算子および単項+トリガーのみで使用する場合

比較演算子、ビット演算子、または緩い等式演算子[==])

とともに使用する場合、2進数+ではなく数値強制。
  • ブール(論理演算子&|!で使用する場合)

***もう1つの注意点は、単項(+)演算子の優先順位が二項(+)演算子よりも高いことです。

コードの説明

それでは、これらのことを明確にした上で、コードに移動して、1行ずつ見ていきましょう-

Line 2 → result = '127' % 5;

暗黙の強制は%演算子を受け取り、それを確認します。そのため、文字列「127」を数値127に変換し、2が結果に格納されます-

Line 5 → fullName = firstName + + lastName;
fullName = firstName + (+lastName);

通常、計算は左から右に行われますが、単項演算子が優先されるため、最初に数値に計算され、演算は次のようになります-

fullName = firstName + NaN;

そして

fullName = ArmaanNaN

  1. JavaScriptのテンプレート文字列。

    ES6でテンプレートが導入され、文字列内に式を埋め込むことができるようになりました。 ‘’または“”引用符の代わりに、バッククォート( ``)を使用します。これらは文字列補間のはるかに優れた方法を提供し、式は$ {a+b}のような方法で埋め込むことができます。 +演算子よりもはるかに優れた構文を提供します。 以下はJavaScriptのテンプレート文字列のコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> &l

  2. 'select'要素へのaddEventListenerがJavaScriptで機能しないのはなぜですか?

    代わりに、addEventListener()と一緒にquerySelector()を使用してください。 例 以下はコードです- <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</titl