这里零碎记录一些ES6的内容,和部分以前版本的内容
一、for-of
如何遍历数组中的元素?很久以前是这样的:
for (var index = 0; index < myArray.length; index++) {
console.log(myArray[index]);
}
ES5之后是这样的:
myArray.forEach(function (value) {
console.log(value);
});
value为数组值,小缺陷是不能break中断
ES6是这样的:
for (var value of myArray) {
console.log(value);
}
二、异常处理
ES3开始引入了 try-catch 语句,是 JavaScript 中处理异常的标准方式。
语法:
try{
//可能发生异常的代码
}catch(error){
//发生错误执行的代码
}
也可以追加 finally 整体效果和java异常处理类似,catch后错误类型有如下这些:
Error
EvalError
RangeError
ReferenceError
SyntaxError
TypeError
URIError
示例如下:
<script>
try{
console.log(b);
console.log("我不会输出的,不要找了")
}catch(error){
console.log("发生错误了")
}finally {
console.log("不管发生不发生错误,我都会执行")
}
console.log("我是try catch后面的代码")
</script>
也可以用 throw 主动抛出错误,并且可以自定义,如下:
<script>
/*该函数接收一个数字,返回他的平方。*/
function foo(num) {
if(typeof num == "number"){
return num * num;
}else{
throw new TypeError("类型错误,你应该传入一个数字...")
}
}
console.log(foo(33))
console.log(foo("abc"))
</script>
自定义的:
<script>
function MyError(message) {
this.message = "注意:这是自定义的错误"
this.name = "自定义错误";
}
MyError.prototype = new Error();
try {
throw new MyError("注意:这是自定义错误类型")
}catch (error){
console.log(error.message)
}
</script>
三、箭头函数
例如:
// ES5
var selected = allJobs.filter(function (job) {
return job.isSelected();
});
// ES6
var selected = allJobs.filter(job => job.isSelected());
语法:标识符(参数)=>表达式。无需输入 function 和 return,小括号、大括号以及分号也可以省略。
如果要接收多重参数,用小括号包裹参数列表,若单行默认return单行结果,若多行代码块,根据需求自行加return语句,如:
// ES5
var total = values.reduce(function (a, b) {
return a + b;
}, 0);
// ES6
var total = values.reduce((a, b) => a + b, 0);