Skip to content

JavaScript

原型的作用?

JavaScript 是一门面向对象的编程语言,而面向对象的语言必须做到一点就是:能判定一个实例的类型。原型就是 JS 实现面向对象的核心,JS 通过原型就可以知晓某个对象属于哪个类型,原型的存在就可以避免类型丢失。

简单来说就是,原型的作用就是为了实现面向对象。

Tips:

实现面向对象有两种方式:

  1. 类型元数据:java、C# ……
  2. 原型:Javascript ……

let 和 var 的区别?

变量提升:在声明前进行使用则会出现变量提升的情况。

首先,let 和 const 没有本质区别,只是 const 定义的基本数据类型不能更改。

所以,对于 let 和 var 来说,区别如下:

  1. 全局污染:

    • var:var 变量会挂载到 window 上。
    • let:let 变量不会挂载到 window 上。
  2. 作用域:

    • var:有 2 种作用域:全局作用域、函数作用域。
    • let:有 3 种作用域:全局作用域、函数作用域、块级作用域。
  3. 暂时性死区(TDZ):

    • var:var 变量在变量提升后,访问为 undefined。
    • let:let 也会存在变量提升,但是会在声明之前形成 暂时性死区,访问会报 ReferenceError 引用错误。
  4. 重复声明:

    • var:var 变量可以重复声明。
    • let:var 变量不可以重复声明。

基于 MIT 许可发布