注:この記事はシリーズ第3弾の章[データ型]の最初の部分である「JavaScriptのJS高度なプログラミングを再学習します。」
「再学習のJavaScript jsの高度なプログラミング」についてJSベースの学習を再検討することです。
前提:任意の言語のコアは、言語の基本原理を説明、内容が頻繁に記述されているが、このような複雑なソリューションを構築するための組み込み関数などの言語構文の基本的な概念、演算子、データ型を伴います。
1.文法
1、js 中的变量、函数名和操作符都区分大小写,
2、另外一些像typeof这些关键字也不能使用
复制代码
2.識別子
いわゆる識別子は、変数、機能、特性、または機能のパラメータの名前を指します。
标识符的写法标准如下:
1、第一个字符必须是一个字母、下划线或者一个美元符号
2、其他字符可以是字母、下划线、美元符号或数字
3、标识符中的字母采用驼峰大小写格式,例如:firstSecond、myCar
复制代码
3.コメント
jsの注釈は1行コメントブロックコメントを含めると、2つのシングルラインは、ブロックコメントは(/に基づいていますバックスラッシュから始まるコメント)(で始まる /)終了
单行注释
// 注释
块级注释
/*
块级注释
*/
复制代码
4.ステートメント
JS文は最終的に何が必要ではないではありませんが、推奨またはセミコロンを記述します。この不必要な時に圧縮コードの問題は発生しませんので。
5.キーワードと予約語
特定のキーワードjsがこれらのキーワードが開始または終了制御文を示すために使用することができる、または特定の操作等を行うために、言語のキーワードが特別に予約されている、それが識別子として使用することはできません、があります。また予約語いくつかの他のJSがあり、それが識別子として使用することができません。
6.変数
ルーズJS可変型ため、格納するために使用することができるタイプは、任意のタイプのデータを失います。各変数は、変数の定義は、VARを使用する必要がある、それの値を保持するために使用されるだけのプレースホルダで、変数を定義するES6後にconstキーワードを聞かせて追加します。
var a = 10 // 定义一个变量a 给它赋值 10
复制代码
注意:グローバルVaRのオペレータは、可変することができ定義しないが、それがあるため、コードを維持することが困難になり、グローバルスコープで定義されたローカル変数の推奨されていませんが。
7.データ・タイプ
未定義、ヌル、ブール、数値や文字列、複合型オブジェクト:JS内のデータの5つの基本タイプがあります。オブジェクトには、順不同の名前と値のペアのグループです。作成したカスタムメカニズムの任意のタイプは、ESではサポートされていません。
8. typeof演算子
次のように与えられた変数のデータ・タイプを検出するために、戻り値が検出されます。
undefined -- 值未定义
Boolean -- 布尔值
string -- 字符串
number -- 数值
object -- 对象或者null
function -- 函数
复制代码
オペレータtypeof演算オペランドは、可変であってもよいリテラル値であってもよい、typeof演算は、オペレータではなく関数です。
9.未定義
これは、変数がVAR後に割り当てられていない場合、この変数の値が定義されていない、定義されていない値の唯一の特殊なタイプです。
var message;
message // undefined
复制代码
注意:初期化されていない変数と変数は、typeofを未定義の後に割り当てられていない、より良い終わりに未定義のソースを決定するために初期化され、割り当てられていないかではないので、文はすべての値が使用されていることをお勧めします。
10.ヌルタイプ
のみNULLデータ・タイプは、第二の値であり、それの顔が空またはNULLオブジェクトポインタであり、ヌルであり、この理由は、実際に検出又は「オブジェクト」typeof演算ヌル値です。
あなたがオブジェクトを保持する変数を定義したい場合は、最善のアプローチは、対応する変数は、オブジェクトへの参照を保持しているかどうかを知ることができますようにヌルヌル変数の代入を検出することです。
注:このような使用は、両方の同じではないヌル==未定義は、真です。明示的に変数の値を設定する必要のないすべてのかどうかは未定義であり、nullの場合、実際にオブジェクトを保存していないオブジェクトを保持する変数は、その変数がnull値を保持しているので、それは明確にする必要があります。これをさらに区別nullとundefined。
11.ブールタイプ
トゥーレ偽、さらに二つの値が同じデジタル値ではない、トゥーレは偽必ずしも、必ずしもゼロに等しい1に等しくない:ブールワード金種のタイプがあります。
ただ、識別子、trueとfalseは大文字と小文字が区別されトゥルーとFlase:注意してください。
私たちは、**ブール()**ブール型の値を変換し、機能することができます。次のように:
var message = 'haha,nihao';
var zh = Boolean(message)
复制代码
次のように変換規則の様々な種類があります。
データの種類 | 真の値に変換 | 偽の値に変換 |
---|---|---|
ブーリアン | 真 | 偽 |
弦 | null以外の文字列 | 「」(空の文字列) |
数 | (無限大を含む)任意の0以外の数値 | 0 和 NaN |
オブジェクト | 任意のオブジェクト | ヌル |
未定義 | 該当事項はありません | 未定義 |
12.番号タイプ
広くJS、整数および浮動小数点値で使用されるデータタイプ。これはリテラル10進、8進数、16進数で表すことができます。
var bjz = 070 // 八进制 56
var sjz = 56 // 十进制 56
var sljz = 0xA // 十六进制 10
复制代码
12.1浮動小数点値
で、値は小数点が含まれており、小数点以下1桁以上なければなりません。
var f = 1.1
复制代码
注:により、メモリ空間を節約するためには、浮動小数点ダブル整数を保存されているので、以下では、自動的に次のように保存された浮動小数点整数に変換されます。
var f = 1. // 小数点后没有数字 保存为 1
var b = 10.0 // 保存为 10
复制代码
次のように大きすぎるか小さすぎる値に加えは、E(科学的表記)によって表すことができます。
var f = 3.125e7 // 3.125 * 10^7 => 31250000
var f = 3e-17 // js 会将小数点后面超过6个0的浮点数值转换为科学计数法
复制代码
注意:0.1 + 0.2を!= 0.3
数値範囲12.2
JS最小によるメモリの制限およびすべての値を格納することができないために、jsが最大値は1.7976931348623157e + 308である、5E-324として表すことができます。算出された値は、特定の最大値が無限大、最小-Infinityに変換さ超える場合。二つの値が表示された場合、その値は、参加後の動作になりません。
12.3はNaN
jsが、非数値である特別な値です。主にエラーをスロー防ぐために、オペランド値の戻り値が返されていない場合を示すために使用されてきました。
2つの特定のNaN、1は、存在するのNaN操作がNaN、2を返す含む任意の、自身を含む任意の値にNaNに等しくありません。これらの二つの特性のために、ESは、定義されますisNaN()任意のタイプのものであってもよいつのパラメータを受け付ける機能を、、、及び機能は、私たちは、このパラメータは「数ではない」であるか否かを判断するのに役立ちます、ますisNaN()はパラメータを受け入れた後にしようとし値、直接値にいくつかの値のない値にこの値を変換します。次のように:
isNaN(NaN) // true
isNaN(10) // false (10是一个数值)
isNaN("10") // false (可以被转换成数值10)
isNaN('blue') // true (不能转换成数值)
isNaN(true) // flase (可以被转换成数值 1)
复制代码
注:ますisNaN()はまた、呼び出されたオブジェクトに基づいて、オブジェクトのために使用することができ、第一のvalueOf()メソッドを呼び出し、この方法は、次いで、戻り値が(のtoStringを呼び出すことに基づいていない場合、戻り値は、値に変換することができるか否かを判断します)この方法は、テストの値を返します。
12.4数値コンバータ
番号()のparseInt()、parseFloatは()、第一の機能は、データの任意のタイプのために使用することができる:三つの機能が非数値に変換することが可能です。他の二つの関数は、文字列値を変換するために使用されています。
Number()转换规则如下:
Boolean值 => true or flase => 1 or 0
number => 传入和返回
null => 返回 0
undefined => 返回null
字符串
如果包含十进制数值 则 '123' => 123 ,'012' => 12
如果是浮点字符串 则 '1.1' => 1.1 , '01.1' => 1.1
如果包含十六进制 则 '0xf' => 相同的十进制
如果为空 则 '' => 0
如果包含除了上述格式 则 '' => NaN
如果是对象,则调用对象的 valueOf()方法,在按照之前的规则转换返回值,
如果转换对象是NaN,则调用对象的 toString() 方法,在按照之前的规则返回字符串
值。
parseInt()转换规则如下:
它会忽略字符串前面的空格,如果第一个字符不是数字或者负号则返回NaN。
如果是其他进制,则转换为响应的十进制数值。
var n = parseInt('1234blue') => 1234
var m = parseInt('') => NaN
parseFloat()转换规则如下:
从第一个字符开始解析每个字符,知道遇到第一个无效的浮点数字字符为止
也就是说字符串中第一个小数点是有效的,第二个小数点就无效的了。因此
它后面的字符串就被忽略了。
var n = parseFloat('1234blue') => 1234
var m = parseFloat('0xA') => 0
var c = parseFloat('22.21.2') => 22.21
var b = parseFloat('22.4') => 22.4
复制代码
13.文字列型
文字の配列によって、すなわち、文字列をゼロまたは16ビットのUnicode文字の複数を表すために使用されます。パッケージから二重引用符(「」)または単一引用符(「」)により、
var a = '124'
var b = "123"
// 注意:双引号开头必须双引号结尾!
复制代码
13.1文字リテラル
エスケープシーケンスをいくつかの特殊リテラル文字。これは、他の用途を有する非印字文字、または文字を表します。
リテラル | 意味 |
---|---|
\ nは | ラップ |
\トン | 集計 |
\ B | ブランク |
\ rを | 入ります |
\ F | フィード |
\ | スラッシュ |
" | 単一引用符 |
" | 二重引用符 |
これらの文字は赤の文字列のどこにでも現れることができ、そして解析する文字として扱われます。
文字列は、によって任意の長さにすることができる長さ属性を取得します。
let b = '1kljk'
b.length // 5
复制代码
13.2文字列の特徴
ESでは文字列は不変です。文字列が作成されると、その値を変更することはできません。あなたは元の値の破壊を必要とする文字列の値を変更したい場合は、再割り当て
var lang = 'shanghai'
lang = lang + 'daxue'
// shanghaidaxue
复制代码
13.3は、文字列に変換されます
次の2つの方法で文字列値を変換したい場合。I.のtoString()、次のように:
var age = 11;
var agestring = age.toString() // '11'
var b = true
var bstring = b.toString() // 'true'
复制代码
ほとんどのデータ型(数値、ブール値、文字列、およびオブジェクト値)は、**のtoString **方法ではなく、nullとundefinedを持っています。ほとんどの場合のtoStringは、パラメータを渡す必要はありません。デフォルト値は、小数点形式の文字列表現で返されます。しかし、実際には、あなたが、進バイナリ16進数のパラメータを渡すことができます。
var num = 10;
num.toString() // '10'
num.toString(2) // '1010'
num.toString(8) // '12'
num.toString(10) // '10'
num.toString(16) // 'a'
复制代码
14.オブジェクト・タイプ
オブジェクトは、データと機能の集まりです。オブジェクトは、new演算子の名前を作成するために、その後、オブジェクトタイプの実装によって作成することができます。作成されたオブジェクトの種類の例としては、そのプロパティとメソッドを追加することができます。
var o = new Object()
复制代码
ESのオブジェクトタイプは、そのインスタンスのすべての基礎となる、型オブジェクトのプロパティとメソッドのいずれかはまた、より特定のオブジェクト内に存在しています。
各オブジェクトのインスタンスは以下の属性とメソッドがあります。
コンストラクタ =>保存機能は、現在のオブジェクトを作成するために使用されます
hasOwnPropertyを(プロパティ名) =>指定された属性は、現在のオブジェクトのインスタンスに存在するかどうかをチェックするために使用されます。propertyNameのは、文字列として指定する必要があります。
isPrototypeOf(オブジェクト) =>オブジェクトが別のオブジェクトのプロトタイプに渡されるかどうかを確認するために使用されます。
propertyIsEnumerable(propertyNameの) =>列挙するために使用することができため、内のステートメント属性が使用されているかどうかを確認し、プロパティ名は、パラメータ文字列で指定する必要がありますようhasOwnPropertyを()メソッド、などです。
toString() =>オブジェクトの文字列表現を返します。
valueOf() =>は、文字列オブジェクトを返し、またはブール値を表します。・
私は公共入札少数の注意を歓迎[学生]