字节青训营前端青训营笔记「5」 | 青训营笔记

28 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

0 前面的话

今天是过完年后开始上课的第三天,今天的内容没仔细听,就写点JavaScript的知识吧!知识点内容可能比较散,仅记录一下而已。这里的学习参考了部分菜鸟教程内容,如有需要,链接: www.runoob.com/js/js-valid…

1 正文

JavaScript Promise

关键点:

  • ** 1、Promise 对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)、rejected(已失败)
  • ** 2、Promise构造函数接收一个函数作为参数,该函数的两个参数分别是 resolve 和 reject
  • ** 3、一个promise对象只能改变一次状态,成功或者失败后都会返回结果数据。
  • ** 4、then 方法可以接收两个回调函数作为参数,第一个回调函数是Promise对象的状态改变为 resoved 是调用,第二个回调函数是 Promise 对象的状态变为 rejected 时调用。其中第二个参数可以省略。
  • ** 5、catch 方法,该方法相当于最近的 then 方法的第二个参数,指向 reject 的回调函数,另一个作用是,在执行resolve回调函数时,如果出错,抛出异常,不会停止运行,而是进入catch 方法中。

注意:catch 只捕获最近的 then 的回调函数,前面的then的执行不成功的结果,有后面 then 的 reject 回调函数执行,如果没有后续 then 回调函数执行,则会被 catch 捕获执行。

函数提升(Hoisting)

提升(Hoisting)是 JavaScript 默认将当前作用域提升到前面去的行为。

提升(Hoisting)应用在变量的声明与函数的声明。

因此,函数可以在声明之前调用:

myFunction(5);

function myFunction(y) {
    return y * y;
}

函数声明:

function myFunction(a, b) {  
    return a * b;  
}

函数表达式:

var x = function (a, b) {return a*b};
var z = x(4, 3);

使用表达式定义函数时无法提升,函数表达式可以 "自调用"。自调用表达式会自动调用。如果表达式后面紧跟 () ,则会自动调用。不能自调用声明的函数。通过添加括号,来说明它是一个函数表达式:

(function () {  
    var x = "Hello!!";      // 我将调用自己  
})();

箭头函数

ES6 新增了箭头函数。

箭头函数表达式的语法比普通函数表达式更简洁。

(参数1, 参数2, …, 参数N) => { 函数声明 }

(参数1, 参数2, …, 参数N) => 表达式(单一)
// 相当于:(参数1, 参数2, …, 参数N) =>{ return 表达式; }

当只有一个参数时,圆括号是可选的:

(单一参数) => {函数声明}
单一参数 => {函数声明}

没有参数的函数应该写成一对圆括号:

() => {函数声明}
// ES5 
var x = function(x, y) { return x * y; } 
// ES6 
const x = (x, y) => x * y;

有的箭头函数都没有自己的 this。 不适合定义一个 对象的方法

当我们使用箭头函数的时候,箭头函数会默认帮我们绑定外层 this 的值,所以在箭头函数中 this 的值和外层的 this 是一样的。

箭头函数是不能提升的,所以需要在使用之前定义。

使用 const 比使用 var 更安全,因为函数表达式始终是一个常量。

如果函数部分只是一个语句,则可以省略 return 关键字和大括号 {},这样做是一个比较好的习惯:

const x = (x, y) => { return x * y };

匿名函数自调用表达式:

(function(){})()

(function(){document.getElementById("demo").innerHTML = "hello kity";})()