Javascript语句

Javascript语句

普通语句

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ltykgDdz-1595208603169)(en-resource://database/7050:1)]

语句块

语句块就是一对大括号,再同一个语句块中可以把多行语句视为同一行语句,这样if、for等语句定义起来就比较简单了。

  • 注意:语句块会产生作用域。

{
    let x = 1;
}
console.log(x); // 报错

循环语句

while 和 do while循环

注意do while无论如何至少会执行一次。

for in循环

for in循环枚举对象的属性,体现了属性的enumerable特征。

let obj = { a: 10, b: 20}
Object.defineProperty(obj, "c", {enumerable:false, value:30})

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

上述代码,对象objc属性是不可枚举的,for in循环枚举obj的属性,输出的只有a和b。

for of 循环和for await of循环

for of 可用于数组,背后的机制是iterator机制。
可以给任何一个对象添加iterator,使它可以用于for of 语句。
实际操作中定义iterator可以使用generator function。

function* foo(){
    yield 0;
    yield 1;
    yield 2;
}
for (let e of foo()){
    console.log(e);  // 0 1 2
}

Javascript还为异步生成器函数配备了异步的for of:

function sleep(duration) {
    return new Promise(function(resolve, reject) {
        setTimeout(resolve,duration);
    })
}
async function* foo(){
    i = 0;
    while(true) {
        await sleep(1000);
        yield i++;
    }
        
}
for await(let e of foo())
    console.log(e);

try语句和throw语句

用于处理异常,配合使用。

try {
    throw new Error("error");
} catch(e) {
    console.log(e);
} finally {
    console.log("finally");
}

throw用于抛出异常,try捕获异常,用throw抛出的异常可以在try语句的结构中被处理掉:

  • try部分用于标识捕获异常的代码段。
  • catch部分用于捕获异常后做一些处理,会创建一个局部的作用域。
  • finally用于执行后做一些必须执行的清理操作,一般用于释放资源。finally语句一定会被执行,即使在try中出现了return,finally中的语句也一定要被执行。

debugger语句

通知调试器在此断点,没有调试器挂载时,不产生任何效果。

声明型语句

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fU3aNtMY-1595208674335)(en-resource://database/7052:1)]

let和const

var不讲了.

  • 块级作用域,作用范围是if、for等结构型语句。
  • 重复声明会报错。
  • let和const声明看上去是执行到了才会生效,实际上还是会被预处理,如果当前作用域内有生命,就无法访问到外部的变量:
const a=2;
if(true){
    console.log(a); //报错
    const a=1;
}

class声明

class a{
}
  • class最基本的用法只需要class关键字、名称和大括号。
  • 声明特征与const、let类似,都是作用域块级作用域,预处理阶段会屏蔽外部变量。
  • class内部可以使用constructor关键字来定义构造函数,还能定义getter/setter和方法。
  • 以目前的兼容性,class中的属性只能写在构造函数中。
  • class默认内部的函数定义都是strict模式的。

函数声明

  • 使用function关键字
    几种声明类型:
function foo(){

}

function* foo(){
    yield 1;
    yield 2;
    yield 3;
}

async function foo(){
    await sleep(3000);
    
}

async function* foo(){
    await sleep(3000);
    yield 1;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值