64ES6_流程控制-创新互联

目录

创新互联建站专注于宁强网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供宁强营销型网站建设,宁强网站制作、宁强网页设计、宁强网站官网定制、小程序开发服务,打造宁强网络公司原创品牌,更为您提供宁强网站排名全网营销落地服务。

语法:...1

流程控制:...2

for循环:...3

while循环、do...while循环:...4

for ... in循环:...5

for ... of循环:...6

三种for迭代的差别:...7

break、continue:...8

语法:

语句块:

js使用大括号构成语句块;

ES6之前语句块是没有作用域的,从ES6开始支持作用域,let只能在块作用域中可见;

函数内的let、var、隐式声明都对外不可见;

块作用仅对let有效(即用let定义的对外不可见,var和隐式声明的对外可见);

例:

function hello() {   //函数内的let、var、隐式声明都对外不可见

let a =1;

var b =2;

c =3;

}

// let d =100;

if (1) {   //块作用域仅对let有效(即用let定义的对外不可见,var和隐式声明的对外可见)

let d =4;

var e =5;

f =6;

if (true) {

console.log(d,e,f);

g =7;

var h =8;

}

}

// console.log(a);   //error

// console.log(b);   //error

// console.log(c);   //error

// console.log(d);   //error,块作用域中的不可见;最外层的可见

console.log(e);

console.log(f);

console.log(g);

console.log(h);

输出:

4 5 6

100

5

6

7

8

流程控制:

条件分支:

if (cond) {

}

else if (cond2) {

}

else if (cond3) {

}

else {

}

条件的false等效:undefined、null、0、NaN、''(空字串);其它值都被视为true;

switch...case分支语句:

所有的switch...case都能转为if...else;

另switch...case支持模式;

穿透问题,要恰当的使用break,如果没有break,会一直走下去,直至碰到break;

default段不是必须;

switch (expression) {

case label_1:

statement1

[break;]

case label_2:

statement2

[break;]

...

default:   //不是必须

statement_def

[break;]

}

例:

let a =1;

switch (a) {

case 1:

console.log('1');

// break;

case 2:

console.log('2');

break;

default:

console.log('null');

break;

}

输出:

1

2

for循环:

C风格;

大括号中只1条语句时,大括号可省,如if (1) return;等价于if (1) {return ;};

for ([initialExpression]);[condition];[incrementExpression]) { 

statement

}

for (let i=0;i

for (;;) {}   //死循环

例:

let arr = [10,20,30,40,50];

for (let i=0;i

console.log(i,arr[i])

}

输出:

0 10

1 20

2 30

3 40

4 50

while循环、do...while循环:

一般用while (true) {},有条件退出用for;

while (condition) {   //条件满足,进入循环,条件为真,继续循环;大括号内语句只有一句,大括号可省

statement

}

do {   //先进入循环,然后判断,为真就继续循环

statement

} while (condition);

例:

let i =10;

while (i--) {

console.log(i);

}

do {

console.log(i)

}while (i++ <10)

例,99乘法表:

for (let x=1;x<10;x++) {

line ='';

for (let y=1;y<=x;y++) {

line +=`${y}*${x}=${x*y} `;   //插值

if (x ==y)

console.log(line);

}

}

for ... in循环:

对象操作语句,用来遍历对象的属性,另数组中索引也是属性;

数组用for ... in返回的是索引;

对象用for ... in返回的是key;

根据个人喜好,或用C风格的for循环,或用for ... in都可;

注:

js的对象,与py的字典类似;

例:

let arr = [10,20,30,40,50];

// let arr = {   //数组可理解为像对象这种定义方式,但不能用arr.0这样访问,不能这样操作

//     0:10,

//     1:20,

//     2:30

// }

for (i in arr) {

console.log(i,arr[i]);

}

输出:

0 10

1 20

2 30

3 40

4 50

例:

function add(x,y) {

return x +y

}

var obj = {   //与py字典访问一样

p1 : 100,

p2 : 'abc',

p3 : [1,2,3],

p4 : add

}

console.log(obj['p4'](4,5));   //属性要用字符串,obj['p4'];obj[p4]不可以,p4 is not defined

for (let key in obj) {

console.log(`${key} :${obj[key]}`);   //插值

}

输出:

9

p1 : 100

p2 : abc

p3 : 1,2,3

p4 : function add(x,y) {

return x + y

}

for ... of循环:

ES6新语法,for ... of不能迭代对象,of后面必须是一个迭代器,可类比py的for in,如for i in [];

遍历数组中的values,即数组中的元素,适合取数组的所有元素,若有条件在for ... in中作判断;

例:

let arr = [10,20,30,40,50];

let obj = {

p1 : 100,

p2 : 'abc',

p3 : [1,2,3]

}

for (let i of arr) {

console.log(i);   //返回数组元素,而不是索引

}

// for (let i of obj) {   //error,ReferenceError: obj is not defined,不能迭代对象,of后必须是迭代器

//     console.log(i);

// }

console.log(typeof(obj));   //object

输出:

10

20

30

40

50

object

三种for迭代的差别:

function sum(arr) {

for (let x in arr) {   //遍历index或对象属性

console.log(x,typeof(x),arr[x]);

}

for (let x of arr) {   //遍历元素

console.log(x,typeof(x));

}

for (let x=0;x

console.log(x,typeof(x),arr[x]);

}

}

sum([3,6,9]);

输出:

0 string 3

1 string 6

2 string 9

3 'number'

6 'number'

9 'number'

0 'number' 3

1 'number' 6

2 'number' 9

break、continue:

break,结束当前循环;

continue,中断当前循环,直接进入下一次循环;

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:64ES6_流程控制-创新互联
本文地址:http://cdiso.cn/article/dchggo.html

其他资讯