Skip to content

1月6日 每日五题

vue3和vue2的区别

组件传参的方式?

ts和js的区别?

静态类型检查:

TypeScript: 是一种静态类型的编程语言,它在代码编译时期进行类型检查。这意味着开发者必须在编写代码时声明变量和函数返回值的类型。静态类型检查可以在代码运行之前发现潜在的错误。

JavaScript: 是一种动态类型的脚本语言,它在运行时进行类型检查。这意味着变量的类型是在代码运行时自动确定的,而不需要在代码中显式声明。

类型注解和接口:

TypeScript: 提供了类型注解和接口等功能,允许开发者定义自己的类型,使得代码更加清晰和易于维护。

JavaScript: 不支持类型注解和接口。它使用原型继承而不是传统的类继承。

编译:

TypeScript: 需要被编译成JavaScript才能在浏览器或Node.js环境中运行。

JavaScript: 作为一种解释型语言,可以直接在浏览器或Node.js环境中运行,不需要编译过程。

工具支持:

TypeScript: 静态类型的特性,提供更强大的编辑器支持,例如自动完成、重构工具和更详细的错误提示。

JavaScript: 虽然现代开发环境也提供了对JavaScript的广泛支持,但由于其动态类型的特性,这些支持通常不如TypeScript那样强大和精确。

生态系统和社区:

TypeScript: 被许多大型项目和团队采用,特别是那些需要更严格的代码质量和可维护性的项目。

JavaScript: 有一个更大、更广泛的社区和生态系统,因为它是Web开发的基石,所有的网页都在使用它。

箭头函数和普通函数的区别?

  1. 箭头函数比普通函数更加简洁
  • 如果没有参数,就直接写一个空括号即可
  • 如果只有一个参数,可以省去参数的括号
  • 如果有多个参数,用逗号分割
  • 如果函数体的返回值只有一句,可以省略大括号
  • 如果函数体不需要返回值,且只有一句话,可以给这个语句前面加一个 void 关键字。最常见的就是调用一个函数:
  1. 箭头函数没有自己的 this,它只会在自己作用域的上一层继承 this。所以箭头函数中 this 的指向在它在定义时已经确定了,之后不会改变。

  2. 箭头函数继承来的 this 指向永远不会改变

  3. call()、apply()、bind()等方法不能改变箭头函数中 this 的指向

  4. 箭头函数不能作为构造函数使用

  5. 箭头函数没有自己的 arguments

  6. 箭头函数没有 prototype

  7. 箭头函数不能用作 Generator 函数,不能使用 yeild 关键字

什么是闭包?有哪些应用?

闭包(Closure)指的是函数和其词法环境的组合,即在函数内部定义的函数可以访问外部函数的变量和参数,即使这些变量和参数在外部函数执行完毕后也不会被销毁。由于闭包可以访问外部函数的变量和参数,因此可以使用闭包在外部函数执行完毕后,继续访问和操作外部函数的变量和参数,从而实现一些高级的编程技巧,如柯里化、函数式编程、事件监听等。

闭包的核心是函数和词法环境的组合,词法环境是指函数执行时内部变量和参数的存储空间,它包含了函数内部定义的所有变量和参数,以及它所处的外部环境中的变量和参数。当一个函数被定义时,它会创建一个新的词法环境,并将其保存在函数内部。当函数被调用时,它会使用自己内部的词法环境来访问变量和参数。

闭包的作用是可以用来创建独立的、私有的变量或方法,这些变量和方法只能在闭包内部访问,外部无法访问。由于闭包可以访问外层函数的变量和参数,因此可以使用闭包在外部函数执行完毕后,继续访问和操作外部函数的变量和参数,从而实现一些高级的编程技巧,如柯里化、函数式编程、事件监听等。

需要注意的是,闭包可能会导致内存泄漏问题,因为闭包会维持外部变量和参数的引用,如果这些变量和参数占用的内存较大,且不及时释放,可能会导致内存泄漏。因此在使用闭包时需要谨慎,及时释放不再需要的变量和参数的引用。