当面试官让你说说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。

相关推荐
Myli_ing4 分钟前
考研倒计时-配色+1
前端·javascript·考研
余道各努力,千里自同风6 分钟前
前端 vue 如何区分开发环境
前端·javascript·vue.js
PandaCave13 分钟前
vue工程运行、构建、引用环境参数学习记录
javascript·vue.js·学习
软件小伟15 分钟前
Vue3+element-plus 实现中英文切换(Vue-i18n组件的使用)
前端·javascript·vue.js
醉の虾37 分钟前
Vue3 使用v-for 渲染列表数据后更新
前端·javascript·vue.js
张小小大智慧1 小时前
TypeScript 的发展与基本语法
前端·javascript·typescript
hummhumm1 小时前
第 22 章 - Go语言 测试与基准测试
java·大数据·开发语言·前端·python·golang·log4j
asleep7011 小时前
第8章利用CSS制作导航菜单
前端·css
hummhumm1 小时前
第 28 章 - Go语言 Web 开发入门
java·开发语言·前端·python·sql·golang·前端框架
幼儿园的小霸王2 小时前
通过socket设置版本更新提示
前端·vue.js·webpack·typescript·前端框架·anti-design-vue