当面试官让你说说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 小时前
传统工作站 vs 云飞云共享云桌面:制造业设计云桌面选型深度对比
运维·服务器·前端·网络·3d·架构·制造
UXbot6 小时前
如何选择适合公司项目的UI设计工具?企业选型指南
前端·低代码·ui·团队开发·原型模式·设计规范·web app
llz_1126 小时前
web-第四次课后作业
前端·spring boot·web
JAVA面经实录9177 小时前
操作系统面试题
java·服务器·数据库·计算机网络·面试
武清伯MVP7 小时前
前端跨域方案大合集
前端·javascript
小刘|8 小时前
Spring AI Alibaba 集成和风天气 API 实战
java·服务器·前端
AI人工智能+电脑小能手8 小时前
【大白话说Java面试题 第117题】【并发篇】第17题:线程有几种状态,之间如何转换?
java·开发语言·面试
星星在线8 小时前
我是怎么把页面图片流量砍掉一半的
前端·javascript
木叶子---9 小时前
前端打包出错
前端·人工智能·tensorflow
JAVA面经实录9179 小时前
前端系统化学习计划表(含完整知识思维导图)
前端·学习