主题
JavaScript
原型的作用?
JavaScript 是一门面向对象的编程语言,而面向对象的语言必须做到一点就是:能判定一个实例的类型。原型就是 JS 实现面向对象的核心,JS 通过原型就可以知晓某个对象属于哪个类型,原型的存在就可以避免类型丢失。
简单来说就是,原型的作用就是为了实现面向对象。
Tips:
实现面向对象有两种方式:
- 类型元数据:java、C# ……
- 原型:Javascript ……
let 和 var 的区别?
变量提升:在声明前进行使用则会出现变量提升的情况。
首先,let 和 const 没有本质区别,只是 const 定义的基本数据类型不能更改。
所以,对于 let 和 var 来说,区别如下:
全局污染:
- var:var 变量会挂载到 window 上。
- let:let 变量不会挂载到 window 上。
作用域:
- var:有 2 种作用域:全局作用域、函数作用域。
- let:有 3 种作用域:全局作用域、函数作用域、块级作用域。
暂时性死区(TDZ):
- var:var 变量在变量提升后,访问为 undefined。
- let:let 也会存在变量提升,但是会在声明之前形成 暂时性死区,访问会报 ReferenceError 引用错误。
重复声明:
- var:var 变量可以重复声明。
- let:var 变量不可以重复声明。