当面试官让你说说js当中的类型转换 你该怎么回答?

当面试官让你谈谈js当中的类型转换 你该怎么去回答?

哈喽哈喽,我是你们的金樽清酒。在这个金三银四面试盛行的黄金时期。大家是不是都在背面经准备面试冲击大厂呢?小编也在整理js的考点,与大家一起努力加油。今天就让我们谈谈当面试官让你谈谈类型转换的时候你该怎么去回答呢?

当面试官让你谈谈js当中的类型转换

当面试官让你说说一个东西的时候。小伙伴们肯定千言万语在心中,什么都想说,却什么也说不出来,就差点想把脑袋里面的东西给面试官看了,可惜面试官不会理会你脑子里有多少东西,而是你能说出来多少东西。那怎么有条理的把自己知道的东西呈现出来,让面试官折服呢?别急,通过这篇文章我们就能够知道如何去应付面试官呢?

  • 什么是类型转换 提到什么是类型转换,那我们首先得知道有哪些数据类型。这个可以跟面试官娓娓道来。

原始类型:number string boolean symbol null undefined Bigint

引用类型:Object Function Array Date RegExp Map Set WeakMap WeakSet js当中的类型转换就是将一种数据类型转换成另一种数据类型。其中我们在日常开发的过程中,通常会用到一种显示的类型转换来完成逻辑开发。比如转换成number,string,用number()和string()方法。可以将一种数据类型转换为其他数据类型。

在我们谈完显示转换类型的时候,自然就会说出另一种转换机制-隐式转换。我们可以这么说:

在v8的执行过程中,还存在另一种转换机制,那就是隐式转换。JavaScript是弱类型语言,这意味着它不像Java,C++一样的强类型语言有预先确定的类型。 并且变量的类型是由值的类型来决定的,这导致了一个问题,一个变量可能上一步骤操作中还是String,下一步操作可能立刻变为了Object,为了解决不同类型无法进行计算,JS底层会将不同类型转换为同一类型,由JS运行环境自动帮我们去做的类型转换,称为隐式类型转换。通常在发生在逻辑运算符和算数运算符当中。

  • 隐式转换的规则

在发生隐式转换的,js当中会自动的执行一个toPrimitive函数,将引用类型转换成原始类型。toPrimitive中有两个参数,一个输入值,一个要转换成的类型。如果是原始类型,直接返回。 input是输入的值,preferedType是期望转换的类型,他可以是字符串,也可以是数字。

如果转换的类型是number,会执行以下步骤:

  1. 如果input是原始值,直接返回这个值;

  2. 否则,如果input是对象,调用input.valueOf(),如果结果是原始值,返回结果;

  3. 否则,调用input.toString()。如果结果是原始值,返回结果;

  4. 否则,抛出错误。

如果转换的类型是String,2和3会交换执行,即先执行toString()方法。

你也可以省略preferedType,此时,日期会被认为是字符串,而其他的值会被当做Number。

也就是说toPrimitive将引用类型转换为原始类型的时候会执行两个方法。valueOf()和toString(),当期待转换的类型不一样的时候这两个方法的的执行顺序会不一样。

经典考题

\]==!\[

请你分析一下结果是true,还是false,让我们来分析一下。 首先存在逻辑运算符,会存在隐式转换,将引用类型转换成原始类型,js会自动调用toPrimitive函数。

!的优先级更高,[]会被默认转换成true,!取反,所以会变成

1.[]==false

一边为引用类型,一边为原始类型会将左边也变为原始类型,[]为'0'

2.'0'==false

== 会将原始数据类型都转换成number类型 '0'转为0,false也会转为0,所以得到0==0

3.0==0

结果为true。

总结

当面试官要你谈谈js中的类型转换的时候,我们要尽量的回答完整,可以先从js当中有哪些类型入手,引出类型转换的分类,显示转换,隐式转换。隐式转换又有一个重要的转换规则,在js当中自动的执行,将引用类型转换为原始类型。好了,相信大家在看了这篇文章之后可以轻松的面对面试官的回答,让面试官为你折服,求着你去上班,祝大家好运,早日拿到心仪的offer。

相关推荐
子兮曰6 小时前
async/await高级模式:async迭代器、错误边界与并发控制
前端·javascript·github
恋猫de小郭6 小时前
2026 Flutter VS React Native ,同时在 AI 时代 VS Native 开发,你没见过的版本
android·前端·flutter
GIS之路8 小时前
ArcGIS Pro 中的 Notebooks 入门
前端
IT_陈寒10 小时前
React状态管理终极对决:Redux vs Context API谁更胜一筹?
前端·人工智能·后端
Kagol11 小时前
TinyVue 支持 Skills 啦!现在你可以让 AI 使用 TinyVue 组件搭建项目
前端·agent·ai编程
柳杉11 小时前
从零打造 AI 全球趋势监测大屏
前端·javascript·aigc
simple_lau11 小时前
Cursor配置MasterGo MCP:一键读取设计稿生成高还原度前端代码
前端·javascript·vue.js
睡不着先生11 小时前
如何设计一个真正可扩展的表单生成器?
前端·javascript·vue.js
天蓝色的鱼鱼11 小时前
模块化与组件化:90%的前端开发者都没搞懂的本质区别
前端·架构·代码规范
明君8799711 小时前
Flutter 如何给图片添加多行文字水印
前端·flutter