JavaScript-語句学習
43259 ワード
JavaScript-語句学習
ステートメントは、プログラムを制御するための論理、流れなどです.ステートメントは、 if whileとdo-while for for-iとfor-of continueとbreak label with switch if文
whileとdo-while
1.省略
2.省略
3.全部省略します
次のように、これは実際にデッドサイクルを作成しました. である. を巡回巡回巡回巡回するために使用される.
上の例は
属性が上記の規則を満たしていない場合、
contineとbreak . を終了する.
次の例の
例えば実際のプロジェクトでは、このような状況が発生します.
with文
switch文
参照 MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements javascript.info:https://javascript.info/object
ステートメントは、プログラムを制御するための論理、流れなどです.ステートメントは、
break
、continue
などの簡単であってもよく、for
、while
ループなどの複雑であってもよい.今日はJavaScriptの文の内容を勉強しに来ました.if
ブロックの中に語句が一つしかない場合、こう書いてもいいです.if (true) console.log('hello,lilei');
else console.log('hello,hanmeimei');
複数の語句:if (true) {
console.log('hello');
console.log('lilei');
}else{
console.log('hello');
console.log('hanmeimei');
}
しかし、より良い理解と整合性のために、私は一般的に括弧を入れました.else if
と組み合わせて使用する:const age = 10;
if(age >= 60){
console.log('Old');
}else if(age >= 18){
console.log('Adult');
}else{
console.log('Young');// Young
}
else if
は複数回入れ子ができますが、一般的にはそうではありません.入れ子が多すぎるとelse-if
文に変更できます.whileとdo-while
switch
:先に判断して実行し、以上のコードはwhile
が成立しないため、出力10let i = 10;
while(i < 10){
i++;
}
console.log(i);//10
i<10
:先に実行した後に判断して、doの循環体のコードは少なくとも一回実行するので、第1回のdo-while
は11に増加してから、条件を満たしていないと判断して、循環を終了して、出力11let i = 10;
do {
i++;
} while(i < 10);
console.log(i);//11
for文i
循環文の文法は以下の通りである.for(init; condition; step){
//
}
for
サイクルの実行プロセスは、次のようなものである.1. init:
2. while(condtion){
//
//step
}
for
サイクルでは、initは一回しか実行されません.その後、condition条件を循環的に判断します.本当であれば、循環体のコードを実行します.for(let i = 0; i < 3; i++){
console.log(i);//0 1 2
}
上記の規則により、for
文に書き換えることができます.let i = 0;
while(i < 3){
console.log(i);//0 1 2
i++;
}
while
の出力結果と同じです.for
にはいくつかの形の変形がある.1.省略
for
let i = 0;// init
for( ; i < 3 ; i++){
console.log(i);//0 1 2
}
init
はすでにi
の前に初期化されているので、for
の中では省略することができる.2.省略
for
for(let i = 0; i < 3; ){
console.log(i);//0 1 2
i++;// step
}
step
は循環体に書いてありますので、step
文では省略できます.3.全部省略します
次のように、これは実際にデッドサイクルを作成しました.
for(;;){
console.log(' ');
}
for-iとfor-offor
は、オブジェクト属性を巡回するために使用されます.for(property in object){
//
}
次の例では、studentオブジェクトの3つの属性名for-in
を出力します.let student = {
name:'lilei',
age:15,
gender:'male'
}
for(let prop in student){
console.log(prop);//name age gender
}
name,age,gender
はES 6導入です.Aray、Map、Setなどを遍歴することができます.let arr = ['a','b','c']
for(let item of arr){
console.log(item);//a b c
}
for-of
とfor-in
の違い:for-of
は、一つのオブジェクトを巡回するためのSymbol以外のエニュメレート・属性であり、出力順序は不確定for-in
は、反復可能オブジェクト上の例は
for-of
で書いてもいいです.let arr = ['a','b','c']
for(let prop in arr){
console.log(arr[prop]);//a b c
}
for-in
で1つの配列を巡回することは推奨されていません.for-in
が出力する順番には注意が必要です.出力順序は属性によって作成された順序ではないので、次の例を見てください.let students = {
'1':'lilei',
'3':'liming',
'2':'hanmeimei'
}
for(let id in students){
console.log(students[id]);
}
出力結果は、for-in
で、作成順序とは異なり、オブジェクトの属性lilei hanmeimei liming
がこの規則を満たしている場合:prop
Math.trunc(Number(prop)).toString() === prop
に従ってNumber(prop)
で順次出力され、そうでなければ作成された順序で上記の例のstudentsのid属性が出力される.Math.trunc(Number('1')).toString() === '1'
Math.trunc(Number('2')).toString() === '2'
Math.trunc(Number('3')).toString() === '3'
したがって、
サイクルでは、属性を数字に戻してから、小さい順に出力します.属性が上記の規則を満たしていない場合、
for-in
の出力順序は属性がコード内で作成される順序である.let students = {
'001':'lilei',
'003':'liming',
'002':'hanmeimei'
}
for(let id in students){
console.log(students[id]);
}
何故ならMath.trunc(Number('001')).toString() !== '1'
Math.trunc(Number('002')).toString() !== '2'
Math.trunc(Number('003')).toString() !== '3'
したがって、for-in
は、属性の作成順序に従って出力される.contineとbreak
for-in
は、このサイクルを終了するlilei liming hanmeimei
は、現在のサイクル次の例の
continue
は、このサイクルを終了し、break
の場合、このサイクルを終了し、次のサイクルを開始する.for(let i = 0; i < 10; i++){
if(i === 5){
continue;
}
console.log(i);//0 1 2 3 4 6 7 8 9
}
continue
では、現在のサイクルが終了され、i=5
では、forループが直接終了される.for(let i = 0; i < 10; i++){
if(i === 5){
break;
}
console.log(i);//0 1 2 3 4
}
label文break
文は主にcontinueとbreak文と結合して使う.例えば実際のプロジェクトでは、このような状況が発生します.
let flag = false;
let num = 0;
for (let i = 0; i < 10; i++) {
if (flag) {
break;//
}
for (let j = 0; j < 10; j++) {
if (i === 5 && j === 5) {
flag = true;
break;//
}
num++;
}
}
console.log(num);//55
i=5
の時に、すべてのサイクルを飛び出す必要があります.前に述べたように、label
は現在のi=5 && j=5
サイクルから飛び出すので、第1のループを飛び出すには識別情報を追加して判断を支援する必要があります.let num = 0;
first:
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
if (i === 5 && j === 5) {
break first;// first
}
num++;
}
}
console.log(num);//55
break
は、for
と組み合わせて使用される場合には、上記の例と同様の役割を果たす.with文
label
は、コードのスコープを特定のオブジェクトに設定することである.let student = {
name : 'lilei',
age : 15
}
//
console.log(student.name);//lilei
console.log(student.age);//15
// with
with(student){
console.log(name);//lilei
console.log(age);//15
}
label
は、studentオブジェクトを包むので、このスコープでstudentオブジェクトの属性にアクセスするときは、continue
プレフィックスを省略することができる.訪問するオブジェクト属性が特に多い場合は、with
を使用することで冗長性が低減され、使いやすくなります.switch文
with
文は、条件判定分岐が多い場合、その特有の利点を発揮することができる.let age = 10;
if(age === 10){
console.log(10);//10
}else if(age === 20){
console.log(20)
}else if(age === 30){
console.log(30);
}else{
console.log(' ');
}
プログラムの中にはたくさんのstudent.
があって、読みにくいし、分かりにくいです.この例をwith
に変えて解決してもいいです.let age = 10;
switch (age) {
case 10:
console.log(10); // 10
break;
case 20:
console.log(20);
break;
case 30:
console.log(30);
break;
default:
console.log(' ');
break;
}
ここで、switch
文の後にif-else
が追加されているのを見ましたが、switch
を追加しないと後で実行されます.let age = 10;
switch (age) {
case 10:
console.log(10); // 10, break,
case 20:
console.log(20); // 20, break,
case 30:
console.log(30); // 30, break, switch
break;
default:
console.log(' ');
break;
}
case文に複数の条件を組み合わせる:let age = 10;
switch (age) {
case 10:
case 20:
console.log(10 + ' '+ 20); // 10 20
break;
case 30:
console.log(30);
break;
default:
console.log(' ');
break;
}
case
は、式としてもよい.let age = 10;
switch (true) {
case age === 10:
console.log(10); // 10
break;
case age === 20:
console.log(20);
break;
case age === 30:
console.log(30);
break;
default:
console.log(' ');
break;
}
ここに来てJavaScript文の簡単な紹介は終わりました.次はJavaScript関数の知識を勉強します.参照