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型

Source: https://habr.com/ru/post/J64889/


All Articles