js控制语句

JS语法

语句块

JS使用大括号构成语句块

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

//语句块
function hello(){
    let a = 1;
    var b = 2;
    c = 3;
}

if(1)
{
    let d =4
    var e = 5
    f = 6
    if(true){
        console.log(d);
        console.log(e)
        console.log(f)
        g = 10
        var h = 11
    }
}
//console.log(a); //不可见
//console.log(b);  //不可见
//console.log(c);   //不可见
console.log(d); //块作用域使用let,不可见;但是块外的d可见
console.log(e);// 块作用域使用var,可见
console.log(f) // 块作用域隐式声明,可见
console.log(g) // 可见
console.log(h) // 可见

流程控制

条件分支

if(cond1){

}
else if (cond2){

}
else if (cond3){

}
else{
    
}

条件的false等效

false、undefined、null、0、NaN、空字符串、其他值都将被视为True

switch…case分支语句

switch (expression) {
   case label_1:
      statements_1
     [break;]
   case label_2:
      statements_2
     [break;]
   ...
   default:
      statements_def
     [break;]
}

这里最大的问题,就是穿透问题,一定要在case中恰当的使用break语句,否则就会继续顺序向下执行。

let x = 5 // 换成1试一试
switch (x) {
    case 0:
        console.log('zero')
        break;
    case 1:
        console.log('one');
    case 2:
        console.log('two');
    case 3:
        console.log('three');
        break;
    case 5:
    case 4:
        console.log('four');
    default:
        console.log('other')
        // break;
       }

switch…case语句都可以写成多分支结构。

for循环

// C风格for循环
for ([initialExpression]; [condition]; [incrementExpression])
{
   statement
}
for(let i = 0;i < 10;i++){
    console.log(i);
}

for(let x = 0, y = 9;x < 10;x++,y--){
    console.log(x*y)
}

for (let i=0;i<10;i+=3){ // 步长
    console.log(i) // i++ ++i
   }

while循环 和do…while循环

while(condition)
	statement

条件满足,进入循环,条件为真,继续循环

do
	statement
while(condition)

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

for…in循环

对象操作语言for…in用来遍历对象的属性

for (variable in object) {
   statements
}
//数组
let arr = [10,20,30,40];
console.log(arr[1]);
for (let x in arr)
    console.log(x); //返回索引
for (let index in arr)
    console.log(`${index}:${arr[index]}`);//插值

//c风格
for(let i = 0;i<arr.length;i++)
    console.log(arr[i]);

//对象
let obj = {
    a:1,
    b:'yunweijiagoushi',
    c:true
}
console.log(obj.a);
console.log(obj['b']);
console.log(obj.d); //undefined

for (let x in obj)
    console.log(x);

for (let key in obj) // 返回属性名,如同key
    console.log(`${key} : ${obj[key]}`);

for…of循环

ES6的新语法

// for of
let arr = [1,2,3,4,5]
let obj = {
    a:1,
    b:'yunweijiagoushi',
    c:true
}
for (let i of arr) { // 返回数组的元素
    console.log(i)
}
for (let i of obj) {// 异常,不可以迭代
    console.log(i)
}

注意:for … of 不能迭代一个普通对象。

原因是,of后面必须是一个迭代器(TypeError: obj[Symbol.iterator] is not a function)

可类比python中的for in,例如for x in [ ]

break、continue

break 结束当前循环

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值