Javascriptから... II

したがっお、最初の郚分の継続、倚くの時間が経過し、今...ここで、玄束されたように、䞻なタむプに぀いおさらに詳しく説明したす。 たず、いく぀かのコメントから、最初の郚分は批刀なしに自然に進むこずはなかったので、導入郚分は「バグの凊理」になりたす。 将来的には、バグに関するこのような䜜業を定期的に䞭断し、habralの人々がこれを助けるこずを願っおいたす...



タむプを繰り返したしょう

デヌタ型には、単玔ず参照の2皮類がありたす。 違いは、単玔型の倉数を別の型に割り圓おるず、倀がコピヌされ、参照型の倉数を割り圓おるず、2番目の倉数が最初の...の倀を参照するこずです。たずえば

// var intVal = 5; // () var otherIntVal = intVal; // , // 5 ( otherIntVal); // var arrayVal = [1,2,3,4]; // - 4- ; var otherArrayVal = arrayVal; // , // (4 ) , , otherArrayVal[1] = 55; // , alert( arrayVal[1] ); // 2 ( 0), 55 * This source code was highlighted with Source Code Highlighter .



  1. // var intVal = 5; // () var otherIntVal = intVal; // , // 5 ( otherIntVal); // var arrayVal = [1,2,3,4]; // - 4- ; var otherArrayVal = arrayVal; // , // (4 ) , , otherArrayVal[1] = 55; // , alert( arrayVal[1] ); // 2 ( 0), 55 * This source code was highlighted with Source Code Highlighter .



  2. // var intVal = 5; // () var otherIntVal = intVal; // , // 5 ( otherIntVal); // var arrayVal = [1,2,3,4]; // - 4- ; var otherArrayVal = arrayVal; // , // (4 ) , , otherArrayVal[1] = 55; // , alert( arrayVal[1] ); // 2 ( 0), 55 * This source code was highlighted with Source Code Highlighter .



  3. // var intVal = 5; // () var otherIntVal = intVal; // , // 5 ( otherIntVal); // var arrayVal = [1,2,3,4]; // - 4- ; var otherArrayVal = arrayVal; // , // (4 ) , , otherArrayVal[1] = 55; // , alert( arrayVal[1] ); // 2 ( 0), 55 * This source code was highlighted with Source Code Highlighter .



  4. // var intVal = 5; // () var otherIntVal = intVal; // , // 5 ( otherIntVal); // var arrayVal = [1,2,3,4]; // - 4- ; var otherArrayVal = arrayVal; // , // (4 ) , , otherArrayVal[1] = 55; // , alert( arrayVal[1] ); // 2 ( 0), 55 * This source code was highlighted with Source Code Highlighter .



  5. // var intVal = 5; // () var otherIntVal = intVal; // , // 5 ( otherIntVal); // var arrayVal = [1,2,3,4]; // - 4- ; var otherArrayVal = arrayVal; // , // (4 ) , , otherArrayVal[1] = 55; // , alert( arrayVal[1] ); // 2 ( 0), 55 * This source code was highlighted with Source Code Highlighter .



  6. // var intVal = 5; // () var otherIntVal = intVal; // , // 5 ( otherIntVal); // var arrayVal = [1,2,3,4]; // - 4- ; var otherArrayVal = arrayVal; // , // (4 ) , , otherArrayVal[1] = 55; // , alert( arrayVal[1] ); // 2 ( 0), 55 * This source code was highlighted with Source Code Highlighter .



  7. // var intVal = 5; // () var otherIntVal = intVal; // , // 5 ( otherIntVal); // var arrayVal = [1,2,3,4]; // - 4- ; var otherArrayVal = arrayVal; // , // (4 ) , , otherArrayVal[1] = 55; // , alert( arrayVal[1] ); // 2 ( 0), 55 * This source code was highlighted with Source Code Highlighter .



  8. // var intVal = 5; // () var otherIntVal = intVal; // , // 5 ( otherIntVal); // var arrayVal = [1,2,3,4]; // - 4- ; var otherArrayVal = arrayVal; // , // (4 ) , , otherArrayVal[1] = 55; // , alert( arrayVal[1] ); // 2 ( 0), 55 * This source code was highlighted with Source Code Highlighter .



  9. // var intVal = 5; // () var otherIntVal = intVal; // , // 5 ( otherIntVal); // var arrayVal = [1,2,3,4]; // - 4- ; var otherArrayVal = arrayVal; // , // (4 ) , , otherArrayVal[1] = 55; // , alert( arrayVal[1] ); // 2 ( 0), 55 * This source code was highlighted with Source Code Highlighter .



  10. // var intVal = 5; // () var otherIntVal = intVal; // , // 5 ( otherIntVal); // var arrayVal = [1,2,3,4]; // - 4- ; var otherArrayVal = arrayVal; // , // (4 ) , , otherArrayVal[1] = 55; // , alert( arrayVal[1] ); // 2 ( 0), 55 * This source code was highlighted with Source Code Highlighter .



// var intVal = 5; // () var otherIntVal = intVal; // , // 5 ( otherIntVal); // var arrayVal = [1,2,3,4]; // - 4- ; var otherArrayVal = arrayVal; // , // (4 ) , , otherArrayVal[1] = 55; // , alert( arrayVal[1] ); // 2 ( 0), 55 * This source code was highlighted with Source Code Highlighter .





特別な意味に぀いおのいく぀かの蚀葉

NaNは、非数を衚す倀です。 算術挔算䞭、結果が数倀ではない堎合、たたは数字から開始しない文字列を倉換する堎合たずえば、「qwe123」に衚瀺されたす。

null-䜕もない空の倀。

未定矩-この倀は、倉数プロパティが存圚しないか、倀がただ割り圓おられおいないこずを瀺したすvar someVariable;。

無限-無限、0で陀算しお埗られ、タむプの最倧/最小範囲を超える堎合

NaNに぀いおの方法で...これは䞀般的に単語の文字通りの意味でナニヌクな意味です...間違っお数字に倉換されたずきに衚瀺されたすが、自分自身にでも䜕でもない=、数字があるかどうかを確認するには、isNaN関数を䜿甚する必芁がありたす、!!!倀を数倀ずしお受け取った堎合はfalseを返したすisNaN =数倀ではありたせん。

isNaN5; // false

isNaN 'string'; // true



typeof関数を䜿甚できる倉数のタむプを確認するず、タむプが文字列ずしお返されたす。

typeof4// 'number'

typeof "some string"// 'string'

typeof[]// 'object'-はい、圌は配列をオブゞェクトず呌びたすそれらをさらに区別する方法、

//実際、配列はオブゞェクトです。特別に別のグルヌプに配眮したす。私の意芋では䟡倀がありたす...

//しかし、これは最も興味深いものではありたせん

typeofnull// 'object'-ここでも圌はこれがオブゞェクトであるず蚀うだろう



もう䞀床、䞻なデヌタ型をリストしたす。

boolean-ブヌル倀。truetrueたたはfalsefalseの2぀のオプションがありたす

数倀-数倀、敎数、たたは小数郚必芁に応じお異なりたす。

文字列-文字列、文字の特定のシヌケンス。

array-デヌタの配列実際、これはオブゞェクトです。

オブゞェクト-オブゞェクト。

function-関数自䜓。

圌らは平等に぀いお䜕床も質問したした...比范のための2぀のオプションがありたす==ず===違いは䜕ですか

JS自䜓には型はなく、単語のみであり、珟圚の倀に基づいお取埗されたす。通垞は必芁ありたせん。たずえば、数倀の文字列衚珟がある堎合、JSは自動的に文字列を数倀に倉換したす。

var q = '55';

var w = '5';

alertq / w//結果11

アラヌト5 == '5'; // true;



しかし、比范するずき、たずえば、0ず比范するずきなど、タむプを正確に決定する必芁がある堎合がありたす

アラヌト0 == ''; // true


この比范では、JSは䞡方の倀が空であるこずを確認し、これを回避するためにそれらを同等化するため、型も考慮する必芁があるこずをJSに䌝える必芁がありたす。===これがたさに

alert5 === '5'// false倀は䌌おいるが、数字は文字列ず等しくない

alert0 === ''// false数倀は文字列ず等しくない




そしお今、䞻なこずに぀いお簡単に...



倉数の削陀

空の倀null、未定矩を割り圓おるか、delete挔算子を䜿甚しお削陀delete someVar; 、delete挔算子を䜿甚しおオブゞェクトプロパティを削陀できたす。



ブヌル型

倀には2぀のタむプがありたす-true / falsetrue / false

タむプ番号

コンストラクタの助けを借りお、たたは単に目的の倀を割り圓おるこずで䜜成できたす

var intVar = 5; //倀を割り圓おお䜜成するず、タむプが自動的に蚭定されたす

var intVar = new Number5; //コンストラクタを䜿甚しお数倀を䜜成したす。

var intVar = new Number '5'; //初期倀を文字列ずしお指定でき、自動的に数倀に倉換されたす

var intVar = new Number 'q'; //その堎合でも可胜ですが、倀はNaNになりたす


䞀般に、これらの䜜成方法にはわずかな違いがありたす。コンストラクタを介しおNaNを獲埗できるずいう事実に加えお、typeofはコンストラクタを介しお䜜成するずきに「オブゞェクト」を返したす。

数倀には、敎数ず浮動小数点の2皮類がありたす。 原則ずしお、特別な分離はなく、算術挔算䞭に自動的に盞互に倉換されたすが、確実に分離する必芁がある堎合は、parseIntずparseFloatの2぀の関数があり、それぞれ倉数を敎数ず浮動小数点に倉換したす。 敎数を浮動小数点数に倉換するこずは意味がありたせんが、文字列は匷打で倉換されたす。

数倀にはいく぀かの䟿利なメ゜ッドがありたすはい、数倀にもメ゜ッドがありたす

.toFixed-数倀が浮動小数点数でない堎合は浮動小数点数に倉換し、必芁な小数点以䞋の桁数に切り捚おたす

toExponential-数倀を指数圢匏に倉換したす5.000+ 0

toPrecision-数倀が倧きい堎合は自動的に指数関数的

浮動小数点問題

アラヌト0.1 + 0.7// 0.7999999999999999

これは考慮に入れなければなりたせん、これは䞍正確さの唯䞀の䟋ではありたせん、そのような倚くのオプションがあり、問題は䞞めるこずによっお解決されたす、ここで平等は無力です

alert0.1 + 0.7.toFixed9// "0.800000000"



タむプ文字列

数倀のように、単に倀を割り圓おるこずで、コンストラクタを介しお䜜成するこずもできたす

var strVal = 'some string'; //倀を割り圓おお䜜成したす

var strVal = new String 'some string'//コンストラクタヌによる䜜成

var strVal = new String5//コンストラクタヌ経由で䜜成


数倀の堎合のように、コンストラクタを介しお倉数を䜜成するず、typeofは「オブゞェクト」を返したす。泚意しおください。

文字列は特殊文字を「理解」したすが、出力䞭には衚瀺されたせんが、゚ラヌたで倧きく歪める可胜性がありたす...ここがメむンです

\ n-改行文字

\ r-キャリッゞリタヌン

\ t-タブ

\ v-垂盎タブIEはこの文字を理解しないため、単に '\'を無芖し、文字 'v'であるず芋なしたす

\ '-単䞀匕甚笊

\ "-二重匕甚笊

\\-バックスラッシュ\

䟋

var strVal = 'some string'およびsome some 'some other string' //これは実行できたせん

var strVal = 'some string \' and some Explain \ 'some other string' //このように匕甚笊を゚スケヌプする必芁がありたす

アラヌトstrVal; //スラッシュは衚瀺されなくなり仕事をした、代わりに矎しい匕甚笊が衚瀺されたす


䟿利な文字列プロパティ

.length //それは1぀ですが、どこにもなければ、文字列の長さを返したす

//泚意するこずをお勧めしたす最初の文字は䜍眮0にあり、長さは1からカりントされたす

//最埌に、最埌の文字の䜍眮= length-1がありたす

いく぀かの䟿利な文字列メ゜ッド

indexOf-怜玢文字列の最初の䞀臎のむンデックスを返したす

replace-テキストを別のテキストに眮き換えたす。正芏衚珟で䜿甚できたす

slice-指定された䜍眮から指定された䜍眮たでのテキストを返したす

substr-指定された䜍眮、指定された長さから始たるテキストを返したす

toLowerCase-文字列を小文字に「䞋げる」

toUpperCase-倧文字の文字列を生成したす



配列型実際はオブゞェクトですが、独自のメ゜ッドずプロパティがありたす

配列を䜜成するには2぀の方法がありたす。

var someArray = new Array; //コンストラクタを介しお

var someArray = []; //このメ゜ッドはオブゞェクトリテラルを䜿甚したすが、芖芚的ではありたせんが、より䟿利です。



JavaScriptでは、配列は「ゎム」であり、芁玠の数を予玄する必芁はありたせん。途䞭で芁玠を削陀するず自動的に増加し、配列は瞮小せず、代わりに削陀された芁玠の倀はundefinedになりたす

動的に倀を末尟に远加したすphpのようにarray [] = '2'は䞍可胜です。むンデックスを指定するか、適切なメ゜ッドを䜿甚する必芁がありたす

いく぀かの䟿利なプロパティ

length-芁玠の数を返したす配列の長さより小さい倀が割り圓おられおいる堎合、配列は割り圓おられた倀に切り捚おられ、0が割り圓おられおいる堎合、配列はクリアされたす

いく぀かの䟿利な方法

join-配列芁玠を文字列に接続したす。セパレヌタを指定できたす

pop-配列の最埌の芁玠を削陀しお返したす

push-配列の最埌に芁玠を曞き蟌みたす

reverse-芁玠の順序を逆にしたす

splice-特定の䜍眮から特定の数の芁玠を削陀したす

sort-配列芁玠を゜ヌトしたす



タむプオブゞェクト

オブゞェクトは2぀の方法で䜜成できたす。

var obj = new Object; //コンストラクタヌを䜿甚

var obj = {}; //オブゞェクトリテラルを䜿甚

var obj = {'key' 'value'、 'key2' 'value2'} //初期倀を含む宣蚀


オブゞェクトの存圚しないプロパティを䜿甚する堎合、゚ラヌは発生せず、未定矩の倀が返されたす

ここでは、存圚しない倉数を参照する際に定期的に発生する䞻なこずは、゚ラヌが発生したすはい、これはifで倉数を䜜成したす。





  1. 詊しおみる
  2. {
  3. //ここで問題のコヌドを曞きたす
  4. }
  5. キャッチ e
  6. {
  7. / *このコヌドは、問題のコヌドで゚ラヌが発生した堎合にのみ実行されたす
  8. eぱラヌオブゞェクトであり、次のプロパティがありたす。
  9. fileName-゚ラヌが発生したファむル
  10. lineNumber-゚ラヌが発生した行
  11. メッセヌゞ-゚ラヌの説明メッセヌゞ
  12. ブラりザヌに䟝存する堎合がありたす* /
  13. アラヌトe.message;
  14. }
  15. ぀いに
  16. {
  17. //このコヌドはどんな堎合でも実行され、゚ラヌがあるかどうか
  18. }
*この゜ヌスコヌドは、 ゜ヌスコヌドハむラむタヌで匷調衚瀺されたした。


原則ずしお、そのような構造はほずんどすべおの蚀語で利甚可胜であり、同じように機胜したす。

/ while /構文がcラむクな構文蚀語に類䌌しおいる堎合、唯䞀の違いはオブゞェクトプロパティ/メ゜ッドの列挙です

forobjのキヌ

{

// key-テキスト圢匏のキヌ

someVar = Obj [キヌ]; //オブゞェクトのプロパティ/メ゜ッドを取埗したす

}



//実際、JSでは、オブゞェクトはハッシュ、぀たりキヌず倀Alyaは連想配列の平凡な比范であり、倀は任意の倀で、単玔な倀数倀、文字列で始たり、関数これらはメ゜ッドで終わりたす。



これですべおです、関数はさらに蚈画され、コンストラクタヌクラスなどの圹割を持぀関数、クロヌゞャヌそれが䜕であるか、なぜそれが必芁なのかを理解するためのほんの数䟋 「クラス」String型およびNumber型






All Articles