衚珟力豊かなJavaScript倀、型、および挔算子

内容







プログラムが機械の衚面の䞋を移動したす。 努力なしで、それは拡倧および瞮小したす。 電子は非垞に調和しおおり、散乱しお収集したす。 モニタヌ䞊のフォヌムは、氎䞭の波王です。 本質は内郚に隠されたたたです...



マスタヌナアンマヌ、プログラミング本



コンピュヌタヌの䞖界にはデヌタしかありたせん。 デヌタの読み取り、デヌタの倉曎、新しいデヌタの䜜成ができたす-しかし、デヌタ以倖には䜕もありたせん。 すべおのデヌタはビットの長いシヌケンスずしお保存されるため、互いに類䌌しおいたす。



ビットは2぀の状態を持぀゚ンティティであり、通垞は0ず1ずしお蚘述されたす。 コンピュヌタヌでは、高電荷ず䜎電荷、匷い信号ず匱い信号、たたはCDの衚面の光沢のあるマットな領域の圢で生きおいたす。 各情報は、れロず1のシヌケンス、぀たりビットずしお衚すこずができたす。



たずえば、数字の13です。10桁で構成される10進数システムの代わりに、2桁のバむナリシステムがありたす。 数倀の各䜍眮の倀は、右から巊に移動するず倍になりたす。 番号13を構成するビットずその重み



0 0 0 0 1 1 0 1 128 64 32 16 8 4 2 1
      
      







2進数00001101、぀たり8 + 4 + 1、぀たり13です。



数量。



たくさんのビットを想像しおください。 兞型的な最新のコンピュヌタヌは、300億ビット以䞊をRAMに保存したす。 通垞、氞続メモリハヌドディスクは、数桁倧きくなりたす。





迷子にならずに䜜業するために、情報の単䜍を衚す断片に分割できたす。 JavaScriptでは、これらの単䜍は数量ず呌ばれたす。 それらの倀はすべおビットで構成されおいたすが、異なる圹割を果たしたす。 各数量には、その圹割を決定するタむプがありたす。 合蚈で6぀の䞻なタむプがありたす数倀、文字列、ブヌル倀、オブゞェクト、関数、および䞍定倀です。



倀を䜜成するには、その名前を指定する必芁がありたす。 これは䟿利です。 建築材料を収集したり、それらを支払う必芁はありたせん。 電話するだけです-op-pa、完了です。 それらは空から䜜成されたものではありたせん-各倀はどこかに保存されおおり、膚倧な数を䜿甚したい堎合、ビットが䞍足する可胜性がありたす。 幞いなこずに、これはすべおが同時に必芁な堎合のみです。 数量が䞍芁な堎合は、数量が解消され、䜿甚されるビットが新しい数量の建築材料ずしお凊理に送られたす。



この章では、JavaScriptプログラムのアトム—単玔なタむプの倉数ずそれらに適甚される挔算子を玹介したす。



数字



数倀型の倀、これは驚きです-数倀。 JavaScriptプログラムでは、次のように蚘述されたす



 13
      
      







プログラムでこの゚ントリを䜿甚するず、コンピュヌタヌのメモリに13ずいう数字を衚す䞀連のビットが衚瀺されたす。



JavaScriptは、固定ビット数64を䜿甚しお数倀を栌玍したす。 64ビットを䜿甚しお衚珟できる数量の数は制限されおいたす。぀たり、数自䜓も制限されおいたす。 N桁の10進数の堎合、曞き蟌むこずができる数字の数は10のN乗です。同様に、64ビットは2の64乗の数を衚珟できたす。 これはかなりたくさんありたす。



以前は、コンピュヌタヌのメモリが少なく、8ビットたたは16ビットのグルヌプが数倀の保存に䜿甚されおいたした。 このような小さな数の最倧数を誀っお超えるこずは簡単でした。぀たり、このビットのセットに収たらない数を䜿甚したした。 今日、コンピュヌタヌには倚くのメモリがあり、64ビットの断片を䜿甚できたす。そのため、倩文孊的な数字を扱う堎合にのみこのこずを心配する必芁がありたす。



確かに、2 ^ 64未満のすべおの数倀がJavaScriptの数倀に適合するわけではありたせん。 負の数倀もこれらのビットに栌玍されたす。したがっお、1ビットに数倀の笊号が栌玍されたす。 さらに、分数を保存できる必芁がありたす。 これを行うには、ビットの䞀郚を䜿甚しお小数点の䜍眮を栌玍したす。 数倀の実際の最倧倀は玄10 ^ 15であり、䞀般的にはただほずんどです。



分数はドットを䜿甚しお蚘録されたす。



 9.81
      
      







非垞に倧きいたたは小さい数は、科孊衚蚘法で文字「e」指数ずそれに続く床で曞かれおいたす。



 2.998e8
      
      







これは2.998×10 ^ 8 = 299800000です。



10 ^ 15未満の敎数敎数ずも呌ばれるを䜿甚した蚈算は、正確であるこずが保蚌されおいたす。 通垞、分数の蚈算は行われたせん。 数πpiを有限の桁数で正確に衚すこずができないように、64ビットしかない堎合、倚くの小数郚を衚すこずはできたせん。 悪いですが、非垞に特定のケヌスでは邪魔になりたす。 これを念頭に眮いお、分数を近䌌倀ずしお扱うこずが重芁です。



算術



数倀を䜿甚しお実行できる䞻なこずは、算術蚈算です。 加算ず乗算は2぀の数倀を䜿甚し、3番目の数倀を䞎えたす。 JavaScriptでこれを蚘述する方法



 100 + 4 * 11
      
      







蚘号+および*は挔算子ず呌ばれたす。 最初は加算、2番目は乗算です。 2぀の量の間に挔算子を配眮し、匏の倀を取埗したす。



たた、この䟋では、「4ず100を加算しおから結果に11を掛ける」こずがわかりたすか、それずも乗算が最初に実行されたすか ご想像のずおり、乗算が最初に行われたす。 しかし、数孊のように、これは括匧を䜿甚しお倉曎できたす。



 (100 + 4) * 11
      
      







挔算子-は枛算に䜿甚され、/は陀算に䜿甚されたす



括匧なしで挔算子を䜿甚する堎合、実行される順序は優先順䜍によっお決たりたす。 *および/挔算子は、優先順䜍が等しい+および-挔算子よりも高い優先順䜍を持っおいたす。 優先順䜍が同じ挔算子を蚈算する堎合、巊から右に蚈算されたす。



 1 - 2 + 1
      
      





1-2+ 1ずしお蚈算



優先順䜍に぀いお心配する必芁はただありたせん。 疑わしい堎合は、括匧を䜿甚しおください。



すぐに認識されない別の挔算子がありたす。 蚘号は、残りを取埗するために䜿甚されたす。 XYはXをYで陀算した䜙りです。314100は14を、14412は0を返したす。挔算子の優先順䜍は乗算ず陀算ず同じです。 「モゞュロ陀算」ず呌ばれたすが、より正確には「剰䜙あり」です。



特別な番号



JavaScriptには3぀の特別な倀があり、これらは数倀ず芋なされたすが、通垞の数倀のようには動䜜したせん。



これらはInfinity



ず-Infinity



であり、正ず負の無限を衚したす。 無限-1 =無限など。 無限倧の蚈算に倧きく䟝存しないでください;それらは厳密すぎたせん。



3番目の数倀 NaN



これは数倀型の倀ですが、「数倀ではない」こずを瀺したす。 0/0、Infinity-Infinity、たたは正確で意味のある結果をもたらさない他の操䜜などの蚈算埌に取埗できたす。



行



次の基本的なデヌタ型は文字列です。 テキストを保存するために䜿甚されたす。 それらは匕甚笊で曞かれおいたす



 “ ,   ” '  ,  '
      
      







二重匕甚笊ず単䞀匕甚笊の䞡方を䜿甚できたす-䞻なこずは、それらを䞀緒に䜿甚するこずです。 ほずんどすべおを匕甚笊で囲み、そこから文字列を䜜成できたす。 ただし、䞀郚の文字は問題を匕き起こしたす。 たずえば、匕甚笊を匕甚笊で囲むこずは困難です。 改行もそれらに単玔に囲たれるこずはできたせん-行は1行ずしお入力する必芁がありたす。



特殊文字を囲むには、バックスラッシュ\を䜿甚したす。 これは、それに続く文字が特別な意味を持぀こずを意味したす-これは「゚スケヌプ文字」ず呌ばれたす。 \」は二重匕甚笊で囲むこずができたす。 \ nは改行を衚し、\ tは集蚈を衚したす。



「1番目ず2番目の文字の間の文字は小さくなりたす」ずいう行は、実際には次のようになりたす。



       
      
      







文字列にバックスラッシュを含める必芁がある堎合は、゚スケヌプする必芁がありたす\\。 「改行文字は「\ n」」ずいう呜什は、次のように蚘述する必芁がありたす。



 "   –  \"\\n\""
      
      







行を分割、乗算、たたは远加するこずはできたせん。 ただし、+挔算子を䞀緒に䜿甚するず、それらを盞互に接続できたす。 次の匏は「接続」ずいう単語を生成したす。



 "" + "" + "" + ""
      
      







文字列を操䜜する方法は倚数ありたす。第4章で説明したす。



単項挔算子



すべおの挔算子が文字で曞かれおいるわけではありたせん-䞀郚は単語で曞かれおいたす。 そのような挔算子の1぀にtypeof



、それが適甚される倀の型の名前を䞎えたす。



 console.log(typeof 4.5) // → number console.log(typeof "x") // → string
      
      







結果を画面に衚瀺する堎合は、䟋でconsole.log



呌び出しを䜿甚したす。 結果がどの皋床正確に返されるかは、スクリプトを実行する環境によっお異なりたす。



以前の挔算子は2぀の倀で機胜したしたが、typeofは1぀の倀のみを䜿甚したす。 2぀の量を扱う挔算子はバむナリず呌ばれ、1぀は単項ず呌ばれたす。 マむナス枛算は、単項ずしおもバむナリずしおも䜿甚できたす。



 console.log(- (10 - 2)) // → -8
      
      







ブヌル倀



倚くの堎合、「はい」ず「いいえ」、「オン」ず「オフ」など、2぀の可胜性のいずれかを単玔に瀺す倀が必芁です。 これを行うために、JavaScriptにはブヌル倀型があり、 true



ずfalse



trueずfalseの2぀の倀しかありたせん。



比范



ブヌル倀を取埗する1぀の方法



 console.log(3 > 2) // → true console.log(3 < 2) // → false
      
      







蚘号<and>は、埓来より少なくなるこずを意味したす。 これらは二項挔算子です。 それらを䜿甚した結果、䞍等匏が真であるかどうかを瀺すブヌル倀を取埗したす。



文字列は同じ方法で比范できたす。



 console.log("" < "") // → true
      
      







文字列はアルファベット順に比范されたす。倧文字の文字は垞に小文字の文字よりも「小さく」なりたす。 比范はUnicode暙準に基づいおいたす。 この芏栌は、あらゆる蚀語のほがすべおのキャラクタヌに番号を割り圓おたす。 文字列を比范するずき、JavaScriptは文字を巊から右に調べ、これらの文字の番号コヌドを比范したす。



他の同様の挔算子は、> =以䞊、<=以䞋、==等しい、! =等しくないです。



 console.log("" != "") // → true
      
      







JavaScriptには、それ自䜓ずは異なる倀が1぀だけありたすNaN



「not a number」。



 console.log(NaN == NaN) // → false
      
      







NaNは無意味な蚈算の結果であるため、他の無意味な蚈算の結果ずは異なりたす。



ブヌル倀自䜓で実行できる操䜜がありたす。 JavaScriptは、次の3぀の論理挔算子をサポヌトしおいたす。



&&挔算子は論理的な「and」です。 バむナリであり、適甚される䞡方の量も真である堎合にのみ、結果は真になりたす。



 console.log(true && false) // → false console.log(true && true) // → true
      
      







挔算子|| -論理的な「たたは」。 倀の1぀がtrueの堎合、trueを返したす。



 console.log(false || true) // → true console.log(false || false) // → false
      
      







「いいえ」は感嘆笊「」を䜿甚しお曞かれおいたす。 これは、指定された倀を逆にする単項挔算子です。 trueはfalse 、! falseはtrueです。



論理挔算子ず算術挔算子を䜿甚する堎合、括匧がい぀必芁かは必ずしも明確ではありたせん。 実際には、これを知るこずでこれを凊理できたす|| 優先順䜍は誰よりも䜎く、次に&&、次に比范挔算子、そしお他の党員が優先されたす。 この順序は、次のような匏で、括匧を最小限に䜿甚できるように遞択されたした。



 1 + 1 == 2 && 10 * 10 > 50
      
      







最埌の論理挔算子は単項でも二項でもありたせん-䞉重です。 疑問笊ずコロンを䜿甚しお蚘述されおいたす。



 console.log(true ? 1 : 2); // → 1 console.log(false ? 1 : 2); // → 2
      
      







これは、疑問笊の巊偎の倀がコロンで区切られた2぀の倀のいずれかを遞択する条件挔算子です。 巊偎の倀がtrueの堎合、最初の倀を遞択したす。 falseの堎合、2番目。



未定矩の倀



意味のある倀がないこずを瀺すために䜿甚される2぀の特別な倀、nullずundefinedがありたす。 単独では、情報を䌝達したせん。



倀を返さないステヌトメントの倚くは、単に䜕かを返すためにundefinedを返したす。 未定矩ずnullの違いは、偶然に蚀語に珟れ、通垞は問題ではありたせん。



自動型倉換



JavaScriptを䜿甚するず、堎合によっおは非垞に奇劙なプログラムを実行できたす。 䟋



 console.log(8 * null) // → 0 console.log("5" - 1) // → 4 console.log("5" + 1) // → 51 console.log("" * 2) // → NaN console.log(false == 0) // → true
      
      







「間違った」タむプの倀に挔算子が適甚されるず、JavaScriptは、垞に期埅を満たしおいない䞀連のルヌルを䜿甚しお、倀を静かに目的のタむプに倉換したす。 これは匷制ず呌ばれたす。 最初の匏では、nullは0に倉わり、「5」は5になりたす文字列から数倀ぞ。 ただし、3番目の匏では、+は文字列を連結連結したす。そのため、1は「1」に倉換されたす数倀から文字列に。



明癜ではないものが数倀に倉わるずたずえば、「5」たたは未定矩、倀NaNが返されたす。 NaNを䜿甚した埌続の算術挔算は、再びNaNを受け取りたす。 この倀を取埗したら、ランダムタむプ倉換が発生した堎所を探したす。



同じタむプの倀を==ず比范する堎合、それらが同じである堎合に真になるべきだず簡単に予枬できたすNaNの堎合を陀く。 ただし、タむプが異なる堎合、JavaScriptは比范のために耇雑でわかりにくい䞀連のルヌルを䜿甚したす。 通垞、圌は䞀方の数量をもう䞀方の数量に​​倉換しようずしたす。 ステヌトメントの片偎でnullたたはundefinedが発生した堎合、䞡偎がnullたたはundefinedであればtrueを返したす。



 console.log(null == undefined); // → true console.log(null == 0); // → false
      
      







最埌の䟋は、䟿利なトリックを瀺しおいたす。 倀にnullたたはundefinedの代わりに実際の倀があるかどうかを確認する必芁がある堎合は、==たたは=でnullず比范するだけです。



しかし、䜕かを正確な倀ず比范する必芁がある堎合はどうでしょうか 型をブヌル倀に倉換する芏則では、0、NaN、および空の文字列「」は停ず芋なされ、他のすべおは真ず芋なされたす。 したがっお、0 == falseおよび“” == falseです。 自動型倉換が必芁ない堎合は、さらに2぀の挔算子===および==を䜿甚できたす。 最初は2぀の倀が完党に同䞀であるこずを怜蚌し、2番目は2番目の倀が完党に同䞀であるこずを怜蚌したす。 そしお、比范“” === falseはfalseを返したす。



予期しない結果に぀ながる可胜性のある予期しない型倉換を防ぐために、3文字の比范挔算子を䜿甚するこずをお勧めしたす。 比范する倀のタむプが䞀臎するこずが確実な堎合は、短い挔算子を安党に䜿甚できたす。



論理挔算子の短い蚈算



論理挔算子&&および|| さたざたな皮類の数量を非垞に奇劙な方法で凊理したす。 次に䜕をすべきかを理解するために、挔算子の巊偎の倀をブヌル倀に倉換したすが、挔算子ずこの倉換の結果に応じお、巊偎たたは右偎から元の倀を返したす。



たずえば、|| trueに倉換できる堎合、巊偎の倀を返したす。それ以倖の堎合、右偎を返したす。



 console.log(null || "user") // → user console.log("Karl" || "user") // → Karl
      
      







そのような挔算子|| デフォルト倀ぞのロヌルバックずしお䜿甚できたす。 巊偎に空の倀を返すこずができる匏を指定するず、右偎の倀がこのケヌスの代替ずしお機胜したす。



&&挔算子は同様に機胜したすが、逆も同様です。 巊偎の倀がfalseに倉換されるず、その倀が返され、そうでない堎合は右偎の倀が返されたす。



もう1぀の重芁な特性は、右偎の匏が必芁な堎合にのみ蚈算されるこずです。 真の堎合|| Xが䜕に等しいかは関係ありたせんが、それが䜕らかのひどい衚珟であっおも。 結果は垞に真であり、Xは蚈算されたせん。 False && Xも機胜したす-Xは単に無芖されたす。 これはショヌト蚈算ず呌ばれたす。



条件ステヌトメントも同じように機胜したす。 最初の匏は垞に蚈算され、2番目ず3番目の倀から-結果ずしお遞択された匏のみが蚈算されたす。



たずめ



数倀、文字列、ブヌル倀、未定矩の4皮類のJavaScript倀を芋たした。



これらの倀は、名前true、nullたたは倀13、「eprst」を蚘述するずきに取埗されたす。 これらは、挔算子を䜿甚しお結合および倉曎できたす。 算術挔算には、2項挔算子+、-、*、/、および、文字列連結+、比范== 、! =、=== 、! ==、<、>、<=、> =がありたす、および論理挔算子&&、||、およびいく぀かの単項挔算子負の倀の堎合は-、論理吊定の堎合は、数量のタむプを決定する堎合はtypeof。



この知識により、JavaScriptを蚈算機ずしお䜿甚できたすが、それ以䞊は䜿甚できたせん。 次の章では、これらの単玔な意味を結び付けお単玔なプログラムを䜜成したす。



All Articles