标识符
- 第一个字符,可以是任意Unicode字母(包括英文字母和其他语言的字母),以及美元符号(
$
)和下划线(_
)。 - 第二个字符及后面的字符,除了Unicode字母、美元符号和下划线,还可以用数字
0-9
。
JavaScript有一些保留字,不能用作标识符:arguments、break、case、catch、class、const、continue、debugger、default、delete、do、else、enum、eval、export、extends、false、finally、for、function、if、implements、import、in、instanceof、interface、let、new、null、package、private、protected、public、return、static、super、switch、this、throw、true、try、typeof、var、void、while、with、yield。
还有三个词虽然不是保留字,但是因为具有特别含义,也不应该用作标识符:
Infinity
、
NaN
、
undefined
。
类数组对象的遍历可以使用和数组对象的遍历一样的方法,
![1111680-20180413222705664-1344558569.png](https://i-blog.csdnimg.cn/blog_migrate/a17d4be05dd9611d53c5ed73b412a486.png)
js用户自定义错误
![1111680-20180413222706023-64751963.png](https://i-blog.csdnimg.cn/blog_migrate/47021222fa8792b557d9ca9fbe52ed18.png)
![1111680-20180413222706333-120174538.png](https://i-blog.csdnimg.cn/blog_migrate/4e839edc7da54f3d242cf4ba108d0f0d.png)
![1111680-20180413222706607-357249547.png](https://i-blog.csdnimg.cn/blog_migrate/acd6780b5ca4acb47bd4af0fc367d23a.png)
下面的例子充分反映了try...catch...finally
这三者之间的执行顺序。
function f() {
try {
console.log(0);
throw 'bug';
} catch(e) {
console.log(1);
return true; // 这句原本会延迟到finally代码块结束再执行
console.log(2); // 不会运行
} finally {
console.log(3);
return false; // 这句会覆盖掉前面那句return
console.log(4); // 不会运行
}
console.log(5); // 不会运行
}
var result = f();
// 0
// 1
// 3
result
// false
上面代码中,catch
代码块结束执行之前,会先执行finally
代码块。从catch
转入finally
的标志,不仅有return
语句,还有throw
语句。
function f() {
try {
throw '出错了!';
} catch(e) {
console.log('捕捉到内部错误');
throw e; // 这句原本会等到finally结束再执行
} finally {
return false; // 直接返回
}
}
try {
f();
} catch(e) {
// 此处不会执行
console.log('caught outer "bogus"');
}
// 捕捉到内部错误
上面代码中,进入catch
代码块之后,一遇到throw
语句,就会去执行finally
代码块,其中有return false
语句,因此就直接返回了,不再会回去执行catch
代码块剩下的部分了。