JavaScript原型链继承和Class继承

在JavaScript中如果想要实现继承,都是要借助原型链特性。class是ES6新推出的关键字,但在JavaScript中并不存在类的概念,class关键字只是一种语法糖,其本质还是函数。

class关键字

JavaScript的静态词法作用域

无论是JavaScript或其他编程语言,都会存在“作用域”的概念。它规定了代码对变量的访问权限以及如何查找变量。词法作用域分为静态作用域和动态作用域,JavaScript所采用的是静态词法作用域。

JavaScript中的 var、let、const

1、变量提升(hoisting)

1
2
console.log(a)    // undefined
var a = 1

上述代码会输出 undefined。
是由于var声明的变量会将声明提升到作用域的顶部(实际上let和const都会存在变量提升),也就等价于:

1
2
3
var a
console.log(a)
a = 1

这就是所谓的变量提升。不仅仅变量会被提升,函数也会被提升:

1
2
3
console.log(a)   // function a() {}
var a = 1
function a() {}

且函数提升的优先级始终要大于变量。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×