変数
1.変数とは何ですか?
変数は、コンピュータ言語で保存することができ、または結果が抽象値を表すことができます。
2、変数の定義
ECMAScriptの5.1で定義されたvarとそれ以前に定義された変数を使用してください。例えば:var name = "EricXie";
name = "EricXie";
二重引用符内に等号がコンテンツ格納された値である後varが、名前が抽象に格納されている名前を表す変数の名前であり、本明細書の変数の定義を表し、ここで記憶されたコンテンツは、EricXie文字列です。
JavaScriptの以前のバージョンでは、変数varが定義することはできませんが、直接書き込む:このアプローチの変数名=値を、また、プログラムを実行することができますが、しかし、明らかに我々はこれを行うことはできません、それは容易ではありませんか私たちは最初の時間が戻って割り当てられた変数の定義で終わりでは、区別してみましょう。
定義に加えて、あなたはまた、例えば、複数のを定義することができ、同時に、変数を定義することができます。
var names="EricXie",age=28,sex="男";
または:
var names="EricXie",
age=28,
sex="男";
注意:私たちは、以下に定義された各変数のためにここにいる、使用している場合、コンマ、セミコロンで区切られ、文の終わりを示し、カンマを使用すると、複数の連続変数を定義できることを意味します。
我々は通常、複製を低減する必要がある場合に使用される変数は、同じ変数を定義するが、唯一のそれぞれの定義された時間の後に、そのような変数の定義を低減するために、通常はまず割り当てずに、上記で変数を定義し、その後の中アプリケーションあなたはそれの上に、この変数割当アプリケーションを使用するたびに。例えば:
var name;
var age,sex;
注意:あなたがもう一度、次に定義は前の定義の値をカバーする、定義されているが、あなたは最後の値を定義した場合、この値が定義されていない場合、これは有効な定義ではありません。例えば:
var name="EricXie";
var name;
//name="EricXie"
JavaScriptの言語は、弱く型付けされた言語であるため、厳密に変数のデータ型を定義する必要はありませんが、定義された変数は、別の型の型にいつでも交換することができ、例えば:
var age=28;//数值
age="36";//字符
age=true;//布尔
私たちは、後で詳細については、引き続きデータ型について。それはこの定義から明らかであるが、堆積物の任意のタイプながら任意の時間変数格納された値、記憶された値に変更してもよいです。ユーザ定義モードに非常に便利提供するが、その後の判断のトラブルをもたらしますが、一方でも効率に影響を与えます。
3.変数の名前
という名前の変数に関係する変数を定義する必要があるという名前の変数が必要であるとでなければならない英語の文字にし、数字、アンダースコアのコンポーネントを。この目的のために、我々は通常、開発プロジェクトは、いくつかの分類行われたときの名前
のような:
- 無意味な変数、ループ、および他の場所、私の多くの使用は、jは1つの文字のように定義されています
- 無意味な変数値の数は後で追加することができる場合、例えばI1、I2、等
- 速度:例えば、英語名を定義するための多目的変数
- シングル使用の変数、英語名の定義、複雑な型定義フレーズ、最初の単語に加えて、最初の文字は呼ばつまり、大文字という名前のラクダ例えば:goodsListを
- あなたはより具体的な帰属を指定する必要がある場合は、たとえば、アンダースコアによって分離することができるjd_goodsList
- 民間非露光変数、または例えば、アンダースコアで始まる、必要に応じてパブリック変数に割り当てられた機能のパラメータ名に:_widthを。そこはJavaScriptにはプライベート変数ではありませんが、時には我々はまだこの方法で対処する必要がありますが。
上記は、私たちはお互いを開発する方法を定義した変数の名前で行われているが、そこに多くの人々確率変数をプレイしたい、例えばgoods1、goods2、goods3はまだあり、それぞれが変数を占めているためように、これは、良いスタートではありませんが収納スペース変数は、変数に格納されたデータの同様のタイプをしたい場合は、それは後に、アレイ内の私たちのプレゼンテーションのこの部分には、配列を使用するのが最適です。
var goods1=1;
var goods2=2;
var goods3=3;
var goodsList=[1,2,3];
与えられているが、我々はまだ禁止されていないが、その他には、中国の名前の変数を使用します。
var 名字="EricXie";//禁止这样定义
もちろん、例えば、使用することができることを言わなかった一部の記号があるので、我々はjQueryのを使用する場合、一人で$を使用しないようにしてみてください。
そして、変数名の一部はように言葉、キーワードやを予約することができません。
キーワード | |||
---|---|---|---|
ブレーク | 行う | instanceofは | typeof演算 |
場合 | 他 | 新しい | ました |
キャッチ | 最後に | リターン | 空隙 |
持続する | にとって | スイッチ | 同時に |
関数 | この | とともに | デフォルト |
もし | スロー | 削除 | に |
試します |
予約語 | |||
---|---|---|---|
抽象 | int型 | ショート | ブーリアン |
輸出する | インタフェース | 静的 | バイト |
拡張 | 長いです | スーパー | CHAR |
最後の | ネイティブ | クラス | 浮く |
スロー | CONST | 後藤 | プライベート |
ダブル | インポート | パブリック |
いくつかのキーワードがここに記載されていないが、その種類は反応の多くを引き起こす可能性がデフォルト(まあ、良いだけの弱いタイプを指定し、それを入力することであると言うことではない?)の設定でしたがそして、これらの変数は何ですか?
例えば:
var status=5; //字符型的5
なぜこの問題が発生しました。実際には、変数は、ページ内の変数の定義として、オブジェクトのプロパティと考えられ、そのようなJavaScriptで以下の変数の定義として、ウィンドウの属性、考慮されます。
var goodsName="电脑";
console.log(window.goodsName); //电脑
ここからページのwindowオブジェクトで直接定義された変数は、ウィンドウの下に直接取得することができるプロパティを追加し始めている見つけることができます。もちろん、裏面に等、オブジェクト指向のコンテンツを使用する場合、問題は別の変数です。
私たちは、この状態変数に戻り、なぜ我々は、数値5を定義しますが、プロパティの文字が変数ウィンドウのコンセプトです5.理由を取得し始めます。Windowオブジェクトの下では、元々の属性がたくさんあったし、これらの属性は、意味や財産よるwindow.statusステータスなどの規定の種類を与えているシステムであり、名前はwindow.nameプロパティです。したがって、これらの属性は、与えることを彼自身のウィンドウを保持することが必須です。だから我々は彼が自動的に規定の文字に変換され、値を定義します。だから我々は、ウィンドウの下のプロパティとメソッドと同じ名前を避けるようにしてください。
図4に示すように、可変メモリストレージ
スタックメモリは、領域(スタック)、およびヒープ(ヒープ)、次いで、JavaScriptで開発者が直接ヒープを操作しないに分割され、ヒープ領域のデータは、JavaScriptエンジンの運転によって行われます
メモリ内の変数の定義は、以下の3つの部分から構成されています。
- 変数ラベル(メモリスタック領域店で示される変数)
- 変数(例えば、35歳以上のように、またはこのアドレス値atguiguヒープアドレスジョブオブジェクトを指し示す値をスタック領域に格納されている)の値
- オブジェクト(例えばオブジェクト上図のように、オブジェクトがスタック領域に格納されています)
第二に、データの種類
6種類の全データ型の値ごとに言語は、JavaScriptのあります
- 文字列
- 数値ナンバー
- ブールブール
- 不定不定
- ヌルnull値が、また、オブジェクトを参照するには、typeof演算を使用するときにオブジェクト型の種類を取得することです。
- オブジェクトオブジェクト
1.String文字タイプ
単一引用符または二重引用符の前と後のすべての種類の文字型が含まれ
、例えば
var names="EricXie";
var sex="男";
var age='35';
var block='';//空字符
var info="I'm a programmer";
var error="I'm" a "programmer"//错误的,这里的a并没有被双引号引起,因此,a不是字符,而是变量名
var error="I'm 'a' programmer"
以上のことから、我々は、二重引用符または一重引用符が発生することが確認できるが、それは対称的である必要があり、二重引用符の後ろに、目の前に単一引用符を使用していない、と二重引用符は、二重引用符には表示されませんので、我々は原因になりたい場合はあなたは、単一引用符を使用する必要がある、または外部のため、それを単一引用符、二重引用符を使用します。
ただ、文字が頻繁に表示したり、状態の事を伝えるために使用されるように関係なく、内部に何があるか、値、文字などが、我々は彼を考えていない、二重引用符または一重引用符を使用します。文字の内容多くは、私たちは、文字列を呼び出します。一般的には文字または文字列のシングルタイプを指します。
数値型2.Number
コンピュータのための値の型は、それは単により多くの意味を表す小数値、ではありません。しかし、どんなには、値の種類、我々はすべての計算を行うことができます。
例えば
var num=0.5;//小数;
var sum=1200;//整数;
var index=-10;//负数;
var hex=0xFF;//16进制数,对应十进制255;
var octal=067;//8进制数,对应十进制55;
var scientific=5.6e+5;//科学计数法数56000;
我々は、値の種類は、整数、小数、正、負で発現させることができる見ることができます。ここでは、小数点小数が呼び出されてい浮動小数点数。それはそうですので、我々は0X、進0スタートで始まり、それぞれ16進数と8進数、16進数、コンピュータを持って、値0は、アルファベットのOではありません注意してください。進数で何のためと進として私たちは、後で詳しく説明しましょう。
我々はまたを、科学的表記法、5.6e + 5はE + N、10 5の力を乗じて5.6パワーnに10を乗じて、N 10のEN負のパワーを有する10のn乗で除算し
すべての値は、数学的な操作のすべての種類に参加することができます。
NaNの非平均値は、注意がNaNの数値型ですが、値が値を記述されていません。console.log(typeof NaN);//number
3.Booleanブール
コンピュータの特殊なタイプで、あるブール値は、実際には、真と偽、または善悪。
これは、範囲が範囲である、2つのだけの範囲ですので、我々はスタートのこのタイプは、2つの値trueとfalseである参照してください。私たちは、時間のセットを定義することができます
var right=true;
var error=false;
4.Undefined未定義のタイプ
タイプに不定、その際にこの定義を
var value=undefined;
var val;
値が値を与えるために、未定義のかそうでない場合は、変数が後に定義されていないように、それが定義されます。
正確な値が定義されていない、彼は唯一の現在の変数の一つの状態を示しています。
価値のない状態を表し、この変数は計算に参加することはできません。この時点では必要ありません。
5.Null空のタイプ
nullは空のタイプ、そうでない場合はnullが実際に空の状態に可変、この変数の除去およびメモリ内のすべてのデータとして識別されている状態で、このタイプがヌルである場合にのみ割り当ては、割り当てを与えることができないれます参照関係。
これを通して、私たちは、むしろオブジェクトへのヒープアドレスポイントよりも、オブジェクトはヒープにまだあることをnullに指しているのは、この変数のアドレスジョブの値を見ることができます。ヒープオブジェクトへの変数ポイントのないアドレス値、ゴミ収集車は、ヒープから、このオブジェクトを回復しません場合、これは保存されていません。
私たちは通常、その値がnullに設定する必要はありません変数の上記の一般的なタイプから見ることができ、変数のオブジェクトタイプは、我々はもはやそれを使用しない場合にのみ、あなたはnullにその値を設定する必要が
オブジェクトであるヌルオブジェクト型をconsole.log(typeof null);//object
6.Objectオブジェクト型
オブジェクト型錯体。我々はいくつかの簡単な紹介を行うためにここにいる
オブジェクトを、より複雑なコンテンツの数を含むことができる、全体として。私たちは、つまり、すべてが対象で、すべてのものがオブジェクトであると考えています。例えば、ジョー・スミスがオブジェクトで、車が対象である、オブジェクト、パンにあります。だから、関係なく、それを記述するために使用される特性の機能の一部を所有しているオブジェクトの、我々はこれらのプロパティを呼び出します。私たちはこれらのメソッドを呼び出し、パンが壊れてしまい、例えば、ジョー・スミスは車がアップ駆動するようにプログラムして実行されますが、それは行うことができます、があります。その後、オブジェクトは属性およびアセンブリの多数の方法で構成されています。
例えば
var job={
name:"谢天",
lesson1:"java",
lesson2:"H5",
lesson3:"Python",
info:"高薪就业"
};
var school=job;
如果要想获取这两个对象下的属性和值时,我们可以这样做
console.log(job.info);
console.log(school["info"]);
どちらの形式は、我々がjob.infoを使用するなど、ここのように、オブジェクトの下のプロパティの値を取得することができ、あなたは、ドット構文の形式でプロパティの正確な値を知ることができます
キーワードの取得を持つオブジェクトのこの形態[「属性名」]であってもよいし、属性名は、キーワードの文字列で使用される場合、そのようなアプローチは、異なる主要な特性の複数を取得してもよいです。私たちは、このプロパティに変数名の形で持って来ることができます。そして、変数名の変更、修正せずに学校[プロ]を取得することができます。例えば:
var pro="info";
console.log(school[pro]);
オブジェクトの属性値は、例えば、このような方法であります
job.info="高薪就业,就业率高";
job["info"]="高薪就业,就业率高";
上記の仕事と学校は、彼らが次のスタイルであるメモリに保存され、二つのオブジェクトです。
私たちは、彼らは私たちがこのような状況が引用符と呼ばれて呼び出し、のいずれかが別の変更を変更引き起こす可能性があります、同じオブジェクトである、つまり、彼らはすべてのポイントは、この主題に対処するために、二つの変数、仕事や学校があることがわかりますつまり、仕事や学校の参照は、ヒープ内のオブジェクト。
たとえば、次のように
job.lesson1 = "ビッグデータとJava";
はconsole.log(school.lesson1); // "Javaとビッグデータ"
第三に、データ型の変換
図1に示すように、数値に変換されます。
(1)ナンバー()
数メソッドを直接数字に変換することができるが、他の文字があるだけで文字列値の内容は、NaNに変換される場合、当然のことながら、他のタイプの変換のために表示されます異なる特性の数。慎重に以下の変換結果のシンプルさを覚えています。
var num0="10";
console.log(Number(num0));//10
var num1="3.1415";
console.log(Number(num1));//3.1415
var num2="10a";
console.log(Number(num2));//NaN
var num3="a10";
console.log(Number(num3));//NaN
var num4=true;
console.log(Number(num4));//1
var num5=false;
console.log(Number(num5));//0
var num6=undefined;
console.log(Number(num6));//NaN
var num7=null;
console.log(Number(num7));//0
var num8={a:1};
console.log(Number(num8));//NaN
(2)のparseInt()
のparseIntの含有量は任意の整数値メソッドを変換することです。ここでは異なる特性の変換があります。それが数値に変換、我々は明らかに見つけると数は、ここで、非常に異なっているが、もちろん、遭遇した文字列が変換されない、すべての文字列の変換値を開始します。純粋な文字列、ブール値、nullがNaNに変換されます
var num0="10";
console.log(parseInt(num0));//10
var num1="3.1415";
console.log(parseInt(num1));//3
var num2="10a";
console.log(parseInt(num2));//10
var num3="a10";
console.log(parseInt(num3));//NaN
var num4=true;
console.log(parseInt(num4));//NaN
var num5=false;
console.log(parseInt(num5));//NaN
var num6=undefined;
console.log(parseInt(num6));//NaN
var num7=null;
console.log(parseInt(num7));//NaN
var num8={a:1};
console.log(parseInt(num8));//NaN
(3)parseFloatは()
parseFloatは、加算外側整数コンテンツを変換しないようにすることを浮動小数点に変換され、そして他
のparseIntは同一です。ここではないdoリスト。
2は、文字に変換しました
(1)文字列()
文字列は、真として、文字列に直接変換され、変換後の全ての他のコンテンツのオブジェクトを除いた文字列の内容をキャストされた「真」に変換され、そのオブジェクト型に変換します[オブジェクトのオブジェクト]
var num8={a:1};
console.log(String(num8));//[object Object]
(2)のtoString()
デフォルトを書かない場合、のtoString文字列にすべてのコンテンツを変換することであるが、ここではパラメータがあります(2)が変換された書き込みは、バイナリ変換に従うものとしますならば、このような書き込みのtoStringとして、文字列に変換バイナリ文字列が、ほとんどない36以上のものとして、それ以外の場合はエラーになります。同じ強いと文字列をオンに加えて、
var num1=15;
console.log(num1.toString(2));//1111
var num2=15;
console.log(num2.toString(8));//17
var num3=15;
console.log(num3.toString(16));//f
toFixed()は(3)
も、強力な文字列を回しtoFixed、主な機能は、例えば、私たちは16を置くことができ、あなたは小数点の位置に応じて値を保持できるということです値はショーではありませんが、16.00となり、我々はこの方法で来ることができます文字列を取得します。文字列の他の部分と同一の方法。後者は、小数点以下2桁である2は、必要に応じて異なる小数点以下の桁を保存するように設定することができます。
var num1=15.00;
console.log(num1.toFixed(2));
(4)+「」
「通常、我々は文字列に任意のコンテンツを変換する簡単な方法を持っている、それは+を使用することで、」
例えば、
var num1=15;
console.log(num1+"");//"15"
var num2=true;
console.log(num2+"");//"true"
図3は、ブール値に変換しました
(1)ブール()
ブール値に任意のコンテンツを変換することができ、ブール値の判断、主に条件を入力し、そのため次の変換が非常に重要であるかどうかの声明の実施を通じて、私たちのプログラムは、条件文ため。
私たちは、トゥーレあるコンテンツ変換の全てに加えて、数値のNaNと0は、文字「」ヌル未定義の空の文字列は、強力なターン後に偽であることがわかりました
var num0=NaN;
console.log(Boolean(num0));//false
var num3=0;
console.log(Boolean(num3));//false
var num5="";
console.log(Boolean(num5));//false
var num6=undefined;
console.log(Boolean(num6));//false
var num7=null;
console.log(Boolean(num7));//false
var num1=1;
console.log(Boolean(num1));//true
var num2=-1;
console.log(Boolean(num2));//true
var num4="abc";
console.log(Boolean(num4));//true
var num8={a:1};
console.log(Boolean(num8));//true
var num9={};
console.log(Boolean(num9));//true
図4に示すように、暗黙的な変換
JavaScriptは自動的に変更した値で変数の型である、弱く型付けされた言語です。それでは、操作の特定の種類は何として見られるになります。この問題では、私たちは後で説明していきましょう。ここでの暗黙的な変換は、後者の操作を指すことを、我々は最初のを必要とし、その後、ルールに従って計算暗黙的な変換結果を行う操作二つの異なるタイプを必要とします。
そして、私たちの暗黙的な変換は、実際には、暗黙の型変換は、我々は前に述べたものです、それを変換する方法です。
- 暗黙数値===数に変換()
- 暗黙的に)===文字列(char型に変換
- 暗黙的)(===ブールブールに変換