123. 面试官:vue3中,ref和reactive有什么区别?

123期

1. 写个算法,实现一个字符串的全排列。
2. vue项目中,如何处理错误?
3. vue3中,ref和reactive有什么区别?

上面问题的答案会在第二天的公众号(程序员每日三问)推文中公布

也可以小程序刷题,已收录500+面试题及答案123. 面试官:vue3中,ref和reactive有什么区别?_第1张图片

122期问题及答案

1. 为什么1['toString'].length的输出结果为1?

1['toString'].length 的输出结果为 1,这是因为在 JavaScript 中,数字(Number)是基本数据类型,而不是对象。当你使用点(.)运算符来访问属性时,JavaScript 会将数字视为对象,并临时将其转换为包装对象(Number 对象)。

在这种情况下,1['toString'] 实际上等同于 Number(1)['toString'],它创建了一个临时的 Number 对象,然后访问其 toString 属性。而 toString 是一个函数,它的 length 属性表示该函数期望的参数个数。

对于 Number.prototype.toString 函数来说,接受一个可选参数radix ,表示:一个整数,范围在 2 到 36 之间,用于指定表示数字值的基数。默认为 10。因此 length 属性的值为 1。所以,1['toString'].length 最终结果为 1。

这里是相应的代码示例:

const numberObject = Number(1);
const toStringFunction = numberObject['toString'];

console.log(toStringFunction.length); // 输出 1

虽然在实际开发中很少会遇到这种用法,但了解 JavaScript 的这种行为有助于更深入地理解语言的工作原理。

2. 如何迁移仓库,同时保留原有的提交记录和分支?

迁移仓库并保留原有的提交记录和分支通常包括以下步骤:

  1. 创建新仓库: 在目标代码托管平台(比如GitHub、GitLab、Bitbucket等)上创建一个新的空仓库。

  2. 克隆原有仓库: 在本地使用 git clone 命令克隆原有仓库。

    git clone <原有仓库URL>
  3. 进入克隆的仓库:

    cd <克隆的仓库目录>
  4. 将新仓库添加为远程仓库:

    git remote add new-origin <新仓库URL>
  5. 推送所有分支和标签到新仓库:

    git push --all new-origin
    git push --tags new-origin

    这会将所有分支和标签推送到新仓库。

  6. 推送所有提交记录:

    git push new-origin --force

    注意:使用 --force 选项是因为你可能已经推送了一部分提交记录,而这些提交记录是无法合并的。谨慎使用 --force,确保你不会覆盖其他人的提交。

这样,你就完成了迁移仓库的过程。请确保在执行任何可能影响他人的操作前与团队成员进行沟通,并在可能的情况下备份重要数据。此外,如果有使用CI/CD工具,也需要相应地更新配置,以适应新的仓库地址。

3. NodeJs中require查找文件的策略是什么?

Node.js 中的 require 函数用于加载模块,而模块的查找过程遵循一定的策略。Node.js 的模块查找策略主要包括以下几个步骤:

  1. 核心模块: 首先,Node.js 会查找是否为核心模块。核心模块是在 Node.js 安装过程中编译进二进制执行文件的模块,可以通过模块名直接引用,无需指定路径。

    const fs = require('fs'); // fs 是核心模块
  2. 文件模块: 如果不是核心模块,Node.js 会尝试从文件系统中加载模块。当你使用相对路径或绝对路径指定模块时,Node.js 会根据指定的路径查找相应的文件。

    const myModule = require('./myModule'); // 从当前目录下加载 myModule.js 或 myModule/index.js
  3. 目录作为模块: 如果指定的路径是一个目录,Node.js 会查找该目录下的 package.json 文件,然后查找 main 字段指定的入口文件。如果没有 package.json 文件或者没有 main 字段,Node.js 会尝试加载目录下的 index.jsindex.json 文件。

    const myPackage = require('./myPackage'); // 从当前目录下的 myPackage 目录加载入口文件
  4. NODE_PATH 环境变量: Node.js 还会查找 NODE_PATH 环境变量指定的目录。NODE_PATH 是一个包含多个目录路径的环境变量,Node.js 会在这些目录中查找模块。

    export NODE_PATH=/path/to/your/modules
  5. 父模块目录: 如果在当前模块中无法找到指定的模块,Node.js 会尝试在父模块的目录中查找,直到找到根目录为止。

总的来说,Node.js 的模块查找策略是根据指定的模块标识按照一定的规则在核心模块、文件系统、目录和环境变量指定的路径中查找相应的模块文件。这种模块加载策略有助于组织和管理 Node.js 项目中的模块化代码。

我要提问

如果你遇到又去的面试题,或者有想知道的前端面试题,可以在下面的小程序提问,收到问题后会在第一时间为你解答。

我要出题

学习不打烊,充电加油只为遇到更好的自己,每天早上9点纯手工发布面试题,每天坚持花20分钟来学习与思考,在千变万化,类库层出不穷的今天,不要等到找工作时才狂刷题,提倡每日学习。

你可能感兴趣的:(123. 面试官:vue3中,ref和reactive有什么区别?)